Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
63 commits
Select commit Hold shift + click to select a range
2751c19
Add integration knowledge opt out UI setting and enable feature flag
juliaElastic Dec 3, 2025
ff61180
Changes from node scripts/capture_oas_snapshot --include-path /api/…
kibanamachine Dec 3, 2025
1fc7ff2
Changes from node scripts/check_mappings_update --fix
kibanamachine Dec 3, 2025
5501cdb
skip reindex for packages not installed from registry
juliaElastic Dec 3, 2025
f8d63b6
Changes from make api-docs
kibanamachine Dec 3, 2025
746029b
Changes from node scripts/jest_integration -u src/core/server/integra…
kibanamachine Dec 3, 2025
0c3da93
reinstall package for bundled packages and skip for non-registry pack…
juliaElastic Dec 3, 2025
7b56735
handle bundled packages
juliaElastic Dec 3, 2025
530c600
skip reindex if knowledge base exists on installed version
juliaElastic Dec 3, 2025
a3011e7
fix tests
juliaElastic Dec 3, 2025
6aa3047
fix tests
juliaElastic Dec 4, 2025
757c46a
Merge branch 'main' into integration-knowledge-ff
juliaElastic Dec 4, 2025
a4f5161
Merge branch 'main' into integration-knowledge-ff
juliaElastic Dec 4, 2025
32e2352
add tests
juliaElastic Dec 4, 2025
d0c5b69
add tests
juliaElastic Dec 4, 2025
78ab0b9
disable action if license is not enterprise
juliaElastic Dec 4, 2025
8161818
Update x-pack/platform/plugins/shared/fleet/public/applications/integ…
juliaElastic Dec 4, 2025
5c9dc6e
Update x-pack/platform/plugins/shared/fleet/public/applications/integ…
juliaElastic Dec 4, 2025
afd59db
Update x-pack/platform/plugins/shared/fleet/public/applications/integ…
juliaElastic Dec 4, 2025
c9e1dca
Update x-pack/platform/plugins/shared/fleet/public/applications/integ…
juliaElastic Dec 4, 2025
3177132
Update x-pack/platform/plugins/shared/fleet/public/applications/integ…
juliaElastic Dec 4, 2025
1142a67
Merge branch 'main' into integration-knowledge-ff
juliaElastic Dec 4, 2025
18dc14e
fix test
juliaElastic Dec 4, 2025
cb24e7c
review comments
juliaElastic Dec 4, 2025
811f7ff
use abortController
juliaElastic Dec 5, 2025
e8e902d
Merge branch 'main' into integration-knowledge-ff
juliaElastic Dec 5, 2025
3570795
pass abortController to use with esClient
juliaElastic Dec 5, 2025
9595cde
fix tests
juliaElastic Dec 5, 2025
5fd7133
fix test
juliaElastic Dec 5, 2025
f5ef80e
added tour and learn more link
juliaElastic Dec 5, 2025
5041599
Fix i18n
juliaElastic Dec 5, 2025
41f608a
Merge branch 'main' into integration-knowledge-ff
juliaElastic Dec 8, 2025
3358168
Merge branch 'main' into integration-knowledge-ff
juliaElastic Dec 8, 2025
f1506ea
fix conflict
juliaElastic Dec 8, 2025
0dd1abb
Changes from node scripts/jest_integration -u src/core/server/integra…
kibanamachine Dec 8, 2025
e9c347e
catch parse error
juliaElastic Dec 8, 2025
ccf38ac
fix checks
juliaElastic Dec 8, 2025
ab7ecd4
disable feature flag in test
juliaElastic Dec 9, 2025
e4ff368
replace newline
juliaElastic Dec 9, 2025
fcbfeb8
remove newlines and fix test
juliaElastic Dec 9, 2025
ba23179
fix test
juliaElastic Dec 9, 2025
6b6e18c
fix tests
juliaElastic Dec 9, 2025
530ba40
fix tests
juliaElastic Dec 10, 2025
34e5e68
fix checks
juliaElastic Dec 10, 2025
7729b4f
fix test
juliaElastic Dec 10, 2025
068fcc6
Merge branch 'main' into integration-knowledge-ff
juliaElastic Dec 10, 2025
249fecb
fix tests
juliaElastic Dec 10, 2025
aa1658f
address review comments
juliaElastic Dec 10, 2025
ca58b14
updated flyout copy
juliaElastic Dec 10, 2025
80cf405
fix tests
juliaElastic Dec 10, 2025
fab37c5
fix test
juliaElastic Dec 11, 2025
519c3ed
update ai assistant test
juliaElastic Dec 11, 2025
222b3de
disable feature flag in ai assistant tests
juliaElastic Dec 11, 2025
2320eca
add retry to test
juliaElastic Dec 11, 2025
00e8077
fix test
juliaElastic Dec 11, 2025
99841c5
Update x-pack/platform/plugins/shared/fleet/public/applications/integ…
juliaElastic Dec 11, 2025
fb01003
disable feature flag in ML test
juliaElastic Dec 11, 2025
ac2fb68
disable feature flag in ML test
juliaElastic Dec 11, 2025
73af7d4
revert test changes
juliaElastic Dec 11, 2025
053e0d3
revert change
juliaElastic Dec 12, 2025
61cc206
move feature flag from base config
juliaElastic Dec 12, 2025
6ce1e64
move ai assistant serverless test to feature flag config
juliaElastic Dec 12, 2025
72f051b
fix checks
juliaElastic Dec 12, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ const _allowedExperimentalValues = {
enableOtelIntegrations: true,
enableAgentStatusAlerting: true,
enableAgentPrivilegeLevelChange: false,
installIntegrationsKnowledge: false,
installIntegrationsKnowledge: true,
enableFleetPolicyRevisionsCleanupTask: true,
agentlessPoliciesAPI: true, // When enabled, agentless policies API will be enabled.
useAgentlessAPIInUI: true, // When enabled, Fleet UI will use agentless policies API to create agentless policies.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ export interface BaseSettings {
metrics?: 'success' | null;
synthetics?: 'success' | null;
};
integration_knowledge_enabled?: boolean;
}

export interface Settings extends BaseSettings {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,19 +20,17 @@ import { useInstalledIntegrationsActions } from '../hooks/use_installed_integrat
import { ExperimentalFeaturesService } from '../../../../../services';
import { useLicense } from '../../../../../hooks';

import { IntegrationKnowledgeFlyout } from './integration_knowledge_flyout';

export const InstalledIntegrationsActionMenu: React.FunctionComponent<{
selectedItems: InstalledPackageUIPackageListItem[];
}> = ({ selectedItems }) => {
const [isOpen, setIsOpen] = useState(false);
Comment thread
juliaElastic marked this conversation as resolved.
Outdated
const [showIntegrationKnowledgeFlyout, setShowIntegrationKnowledgeFlyout] = useState(false);
const { enablePackageRollback } = ExperimentalFeaturesService.get();
const licenseService = useLicense();
const button = (
<EuiButton
iconType="arrowDown"
disabled={selectedItems.length === 0}
iconSide="right"
onClick={() => setIsOpen((s) => !s)}
>
<EuiButton iconType="arrowDown" iconSide="right" onClick={() => setIsOpen((s) => !s)}>
<FormattedMessage
id="xpack.fleet.epmInstalledIntegrations.actionButton"
defaultMessage="Actions"
Expand Down Expand Up @@ -63,6 +61,11 @@ export const InstalledIntegrationsActionMenu: React.FunctionComponent<{
return bulkRollbackIntegrationsWithConfirmModal(selectedItems);
}, [selectedItems, bulkRollbackIntegrationsWithConfirmModal]);

const openManageIntegrationKnowledgeFlyout = useCallback(() => {
setIsOpen(false);
setShowIntegrationKnowledgeFlyout(true);
}, []);

const items = useMemo(() => {
const hasUpgreadableIntegrations = selectedItems.some(
(item) =>
Expand All @@ -80,97 +83,124 @@ export const InstalledIntegrationsActionMenu: React.FunctionComponent<{
!!item.installationInfo?.previous_version && !item.installationInfo?.is_rollback_ttl_expired
);

return [
const menuItems = [
<EuiContextMenuItem
key="upgrade"
icon="refresh"
disabled={!hasUpgreadableIntegrations}
onClick={openUpgradeModal}
key="integrationKnowledge"
icon="gear"
onClick={openManageIntegrationKnowledgeFlyout}
>
<FormattedMessage
id="xpack.fleet.epmInstalledIntegrations.bulkUpgradeButton"
defaultMessage={'Upgrade {count, plural, one {# integration} other {# integrations}}'}
values={{
count: selectedItems.length,
}}
id="xpack.fleet.epmInstalledIntegrations.manageIntegrationKnowledgeButton"
defaultMessage={'Manage integration knowledge'}
/>
</EuiContextMenuItem>,
<EuiContextMenuItem
key="uninstall"
icon="trash"
disabled={hasUninstallableIntegrations}
onClick={openUninstallModal}
>
{hasUninstallableIntegrations ? (
<EuiToolTip
position="right"
content={
<FormattedMessage
id="xpack.fleet.epmInstalledIntegrations.uninstallDisabledTooltip"
defaultMessage="Can't uninstall integrations that are attached to agent policies"
/>
}
];

if (selectedItems.length > 0) {

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Previously the Actions button was disabled if there were no integrations selected.
Now the new Manage integration knowledge is available even if there are no selected items.

menuItems.push(
...[
<EuiContextMenuItem
key="upgrade"
icon="refresh"
disabled={!hasUpgreadableIntegrations}
onClick={openUpgradeModal}
>
<FormattedMessage
id="xpack.fleet.epmInstalledIntegrations.bulkUninstallButton"
defaultMessage={
'Uninstall {count, plural, one {# integration} other {# integrations}}'
}
id="xpack.fleet.epmInstalledIntegrations.bulkUpgradeButton"
defaultMessage={'Upgrade {count, plural, one {# integration} other {# integrations}}'}
values={{
count: selectedItems.length,
}}
/>
</EuiToolTip>
) : (
<FormattedMessage
id="xpack.fleet.epmInstalledIntegrations.bulkUninstallButton"
defaultMessage={'Uninstall {count, plural, one {# integration} other {# integrations}}'}
values={{
count: selectedItems.length,
}}
/>
)}
</EuiContextMenuItem>,
...(enablePackageRollback
? [
<EuiContextMenuItem
key="rollback"
icon="returnKey"
disabled={!hasRollbackableIntegrations || !licenseService.isEnterprise()}
onClick={openRollbackModal}
>
</EuiContextMenuItem>,
<EuiContextMenuItem
key="uninstall"
icon="trash"
disabled={hasUninstallableIntegrations}
onClick={openUninstallModal}
>
{hasUninstallableIntegrations ? (
<EuiToolTip
position="right"
content={
<FormattedMessage
id="xpack.fleet.epmInstalledIntegrations.uninstallDisabledTooltip"
defaultMessage="Can't uninstall integrations that are attached to agent policies"
/>
}
>
<FormattedMessage
id="xpack.fleet.epmInstalledIntegrations.bulkUninstallButton"
defaultMessage={
'Uninstall {count, plural, one {# integration} other {# integrations}}'
}
values={{
count: selectedItems.length,
}}
/>
</EuiToolTip>
) : (
<FormattedMessage
id="xpack.fleet.epmInstalledIntegrations.bulkRollbackButton"
id="xpack.fleet.epmInstalledIntegrations.bulkUninstallButton"
defaultMessage={
'Rollback {count, plural, one {# integration} other {# integrations}}'
'Uninstall {count, plural, one {# integration} other {# integrations}}'
}
values={{
count: selectedItems.length,
}}
/>
</EuiContextMenuItem>,
]
: []),
];
)}
</EuiContextMenuItem>,
...(enablePackageRollback
? [
<EuiContextMenuItem
key="rollback"
icon="returnKey"
disabled={!hasRollbackableIntegrations || !licenseService.isEnterprise()}
onClick={openRollbackModal}
>
<FormattedMessage
id="xpack.fleet.epmInstalledIntegrations.bulkRollbackButton"
defaultMessage={
'Rollback {count, plural, one {# integration} other {# integrations}}'
Comment thread
juliaElastic marked this conversation as resolved.
Outdated
}
values={{
count: selectedItems.length,
}}
/>
</EuiContextMenuItem>,
]
: []),
]
);
}

return menuItems;
}, [
selectedItems,
openUninstallModal,
openUpgradeModal,
openRollbackModal,
enablePackageRollback,
licenseService,
openManageIntegrationKnowledgeFlyout,
]);

return (
<EuiPopover
id="fleet.epmInstalledIntegrations.bulkActionPopover"
button={button}
isOpen={isOpen}
closePopover={() => setIsOpen(false)}
panelPaddingSize="none"
anchorPosition="downLeft"
>
<EuiContextMenuPanel size="s" items={items} />
</EuiPopover>
<>
<EuiPopover
id="fleet.epmInstalledIntegrations.bulkActionPopover"
button={button}
isOpen={isOpen}
closePopover={() => setIsOpen(false)}
panelPaddingSize="none"
anchorPosition="downLeft"
>
<EuiContextMenuPanel size="s" items={items} />
</EuiPopover>
{showIntegrationKnowledgeFlyout && (
<IntegrationKnowledgeFlyout onClose={() => setShowIntegrationKnowledgeFlyout(false)} />
)}
</>
);
};
Loading