@orchestrator-ui/orchestrator-ui-components 7.5.0 → 7.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/.turbo/turbo-build.log +7 -7
  2. package/.turbo/turbo-lint.log +1 -1
  3. package/.turbo/turbo-test.log +8 -8
  4. package/CHANGELOG.md +20 -0
  5. package/dist/index.d.ts +481 -10
  6. package/dist/index.js +588 -489
  7. package/dist/index.js.map +1 -1
  8. package/jest.config.cjs +4 -1
  9. package/package.json +6 -6
  10. package/src/components/WfoAgent/ExportButton/ExportButton.tsx +5 -11
  11. package/src/components/WfoAgent/WfoAgent/WfoAgent.tsx +79 -31
  12. package/src/components/WfoAgent/WfoAgentChart/WfoAgentLineChart.tsx +2 -2
  13. package/src/components/WfoAgent/WfoAgentChart/WfoAgentPieChart.tsx +2 -2
  14. package/src/components/WfoAgent/WfoAgentTable/WfoAgentTable.tsx +9 -9
  15. package/src/components/WfoAgent/WfoAgentVisualization/WfoAgentVisualization.tsx +2 -2
  16. package/src/components/WfoAgent/WfoPlanProgress/WfoPlanProgress.tsx +107 -0
  17. package/src/components/WfoAgent/WfoPlanProgress/index.ts +1 -0
  18. package/src/components/WfoAgent/WfoPlanProgress/styles.ts +62 -0
  19. package/src/components/WfoAgent/WfoQueryArtifact/WfoQueryArtifact.tsx +40 -0
  20. package/src/components/WfoAgent/WfoQueryArtifact/index.ts +1 -0
  21. package/src/components/WfoAgent/index.ts +2 -0
  22. package/src/components/WfoBadges/WfoVersionIncompatibleBadge/WfoVersionIncompatibleBadge.tsx +7 -6
  23. package/src/components/WfoKeyValueTable/WfoValueCell.tsx +1 -1
  24. package/src/components/WfoPageTemplate/WfoSidebar/WfoMenuLink.tsx +10 -4
  25. package/src/components/WfoPageTemplate/WfoSidebar/styles.ts +28 -3
  26. package/src/components/WfoPydanticForm/fields/WfoInteger.tsx +22 -3
  27. package/src/components/WfoSubscription/WfoSubscriptionActions/WfoSubscriptionActions.tsx +3 -2
  28. package/src/components/WfoSubscriptionsList/WfoSubscriptionsList.tsx +9 -9
  29. package/src/components/WfoTable/WfoAdvancedTable/WfoAdvancedTable.tsx +1 -1
  30. package/src/components/WfoTable/WfoFirstPartUUID/WfoFirstPartUUID.tsx +1 -1
  31. package/src/components/WfoTree/styles.ts +1 -1
  32. package/src/configuration/constants.ts +3 -0
  33. package/src/configuration/version.ts +1 -1
  34. package/src/hooks/useAgentPlanEvents.ts +188 -0
  35. package/src/messages/en-GB.json +5 -0
  36. package/src/rtk/endpoints/agentQueryResults.ts +19 -0
  37. package/src/rtk/endpoints/index.ts +1 -0
  38. package/src/types/search.ts +19 -4
  39. package/src/utils/compareVersions.spec.ts +5 -0
  40. package/src/utils/compareVersions.ts +55 -23
  41. package/src/components/WfoAgent/ToolProgress/DiscoverFilterPathsDisplay.tsx +0 -99
  42. package/src/components/WfoAgent/ToolProgress/RunSearchDisplay.tsx +0 -34
  43. package/src/components/WfoAgent/ToolProgress/SetFilterTreeDisplay.styles.ts +0 -62
  44. package/src/components/WfoAgent/ToolProgress/SetFilterTreeDisplay.tsx +0 -107
  45. package/src/components/WfoAgent/ToolProgress/StartNewSearchDisplay.tsx +0 -60
  46. package/src/components/WfoAgent/ToolProgress/ToolProgress.tsx +0 -98
  47. package/src/components/WfoAgent/ToolProgress/index.ts +0 -1
  48. package/src/components/WfoAgent/ToolProgress/styles.ts +0 -52
package/dist/index.js CHANGED
@@ -35,6 +35,7 @@ var METADATA_PRODUCT_BLOCK_ENDPOINT = "product_blocks";
35
35
  var METADATA_RESOURCE_TYPE_ENDPOINT = "resource_types";
36
36
  var METADATA_WORKFLOWS_ENDPOINT = "workflows";
37
37
  var METADATA_SCHEDULES_ENDPOINT = "schedules";
38
+ var SEARCH_QUERY_RESULTS_ENDPOINT = "search/queries";
38
39
 
39
40
  // src/configuration/policy-resources.ts
40
41
  var PolicyResource = /* @__PURE__ */ ((PolicyResource2) => {
@@ -63,7 +64,7 @@ var PolicyResource = /* @__PURE__ */ ((PolicyResource2) => {
63
64
  })(PolicyResource || {});
64
65
 
65
66
  // src/configuration/version.ts
66
- var ORCHESTRATOR_UI_LIBRARY_VERSION = "7.5.0";
67
+ var ORCHESTRATOR_UI_LIBRARY_VERSION = "7.6.0";
67
68
 
68
69
  // src/types/types.ts
69
70
  var EngineStatus = /* @__PURE__ */ ((EngineStatus2) => {
@@ -2613,6 +2614,22 @@ var availabilityApi = orchestratorApi.injectEndpoints({
2613
2614
  });
2614
2615
  var { useCheckSearchAvailabilityQuery, useCheckAgentAvailabilityQuery } = availabilityApi;
2615
2616
 
2617
+ // src/rtk/endpoints/agentQueryResults.ts
2618
+ var agentQueryResultsApi = orchestratorApi.injectEndpoints({
2619
+ endpoints: (builder) => ({
2620
+ getAgentQueryResults: builder.query({
2621
+ query: (queryId) => ({
2622
+ url: `${SEARCH_QUERY_RESULTS_ENDPOINT}/${queryId}/results`,
2623
+ method: "GET"
2624
+ }),
2625
+ extraOptions: {
2626
+ baseQueryType: "fetch" /* fetch */
2627
+ }
2628
+ })
2629
+ })
2630
+ });
2631
+ var { useGetAgentQueryResultsQuery } = agentQueryResultsApi;
2632
+
2616
2633
  // src/hooks/useCheckEngineStatus.ts
2617
2634
  var useCheckEngineStatus = () => {
2618
2635
  const { data, isLoading, refetch } = useGetEngineStatusQuery();
@@ -2656,35 +2673,51 @@ import { useTranslations as useTranslations3 } from "next-intl";
2656
2673
  import { EuiSpacer, EuiToolTip } from "@elastic/eui";
2657
2674
 
2658
2675
  // src/utils/compareVersions.ts
2659
- var compareVersions = (versionString1, versionString2) => {
2660
- const splittedVersion1 = versionString1.split(".");
2661
- const splittedVersion2 = versionString2.split(".");
2662
- for (let i = 0; i < splittedVersion1.length; i++) {
2663
- if (parseInt(splittedVersion1[i]) > parseInt(splittedVersion2[i])) {
2664
- return 1;
2665
- } else if (parseInt(splittedVersion1[i]) < parseInt(splittedVersion2[i])) {
2666
- return -1;
2676
+ var compareVersions = (v1, v2) => {
2677
+ const parse = (v) => {
2678
+ const parts = v.split(".");
2679
+ const major = parseInt(parts[0]);
2680
+ const minor = parseInt(parts[1]);
2681
+ const patchPart = parts[2] ?? "";
2682
+ let patch = 0;
2683
+ let suffix = "";
2684
+ for (let i = 0; i < patchPart.length; i++) {
2685
+ const char = patchPart[i];
2686
+ if (char >= "0" && char <= "9") {
2687
+ patch = patch * 10 + Number(char);
2688
+ } else {
2689
+ suffix = patchPart.slice(i);
2690
+ break;
2691
+ }
2667
2692
  }
2668
- }
2669
- return 0;
2693
+ return { major, minor, patch, suffix };
2694
+ };
2695
+ const a = parse(v1);
2696
+ const b = parse(v2);
2697
+ if (a.major !== b.major) return a.major > b.major ? 1 : -1;
2698
+ if (a.minor !== b.minor) return a.minor > b.minor ? 1 : -1;
2699
+ if (a.patch !== b.patch) return a.patch > b.patch ? 1 : -1;
2700
+ if (a.suffix === b.suffix) return 0;
2701
+ if (!a.suffix) return 1;
2702
+ if (!b.suffix) return -1;
2703
+ return a.suffix > b.suffix ? 1 : -1;
2670
2704
  };
2671
2705
  var findMinimumOrchestratorCoreVersion = (orchestratorUiVersion, versionMappings) => {
2672
- const orchestratorUiVersions = versionMappings.map((version) => version.orchestratorUiVersion);
2673
- let mappedVersion = versionMappings[0];
2674
- for (let i = 0; i < orchestratorUiVersions.length; i++) {
2675
- if ([0, 1].includes(compareVersions(orchestratorUiVersion, orchestratorUiVersions[i]))) {
2676
- mappedVersion = versionMappings[i];
2706
+ const sorted = [...versionMappings].sort((a, b) => compareVersions(b.orchestratorUiVersion, a.orchestratorUiVersion));
2707
+ for (const mapping of sorted) {
2708
+ if (compareVersions(orchestratorUiVersion, mapping.orchestratorUiVersion) >= 0) {
2709
+ return mapping.minimumOrchestratorCoreVersion;
2677
2710
  }
2678
2711
  }
2679
- return mappedVersion.minimumOrchestratorCoreVersion;
2712
+ return sorted[sorted.length - 1]?.minimumOrchestratorCoreVersion ?? null;
2680
2713
  };
2681
2714
  var getOrchestratorCoreVersionIfNotCompatible = (orchestratorUiVersion, orchestratorCoreVersion, versionMappings) => {
2682
- const minimumOrchestratorCoreVersion = findMinimumOrchestratorCoreVersion(orchestratorUiVersion, versionMappings);
2683
- const comparison = compareVersions(orchestratorCoreVersion, minimumOrchestratorCoreVersion);
2684
- if (comparison === -1) {
2685
- return minimumOrchestratorCoreVersion;
2715
+ const minimumVersion = findMinimumOrchestratorCoreVersion(orchestratorUiVersion, versionMappings);
2716
+ if (!minimumVersion) {
2717
+ return null;
2686
2718
  }
2687
- return null;
2719
+ const isCompatible = compareVersions(orchestratorCoreVersion, minimumVersion) !== -1;
2720
+ return isCompatible ? null : minimumVersion;
2688
2721
  };
2689
2722
 
2690
2723
  // ../../version-compatibility.json
@@ -2720,11 +2753,8 @@ var WfoVersionIncompatibleBadge = ({
2720
2753
  const t = useTranslations3("main");
2721
2754
  const { theme } = useOrchestratorTheme();
2722
2755
  const mappedVersions = version_compatibility_default;
2723
- const minimumOrchestratorCoreVersion = getOrchestratorCoreVersionIfNotCompatible(
2724
- orchestratorUiVersion,
2725
- orchestratorCoreVersion,
2726
- mappedVersions
2727
- );
2756
+ const isReady = orchestratorCoreVersion && orchestratorUiVersion;
2757
+ const minimumOrchestratorCoreVersion = isReady ? getOrchestratorCoreVersionIfNotCompatible(orchestratorUiVersion, orchestratorCoreVersion, mappedVersions) : null;
2728
2758
  return /* @__PURE__ */ jsx9(
2729
2759
  EuiToolTip,
2730
2760
  {
@@ -2752,7 +2782,7 @@ var WfoVersionIncompatibleBadge = ({
2752
2782
  textColor: theme.colors.textGhost,
2753
2783
  css: {
2754
2784
  marginLeft: theme.size.s,
2755
- visibility: minimumOrchestratorCoreVersion ? "visible" : "hidden"
2785
+ display: minimumOrchestratorCoreVersion ? "block" : "none"
2756
2786
  },
2757
2787
  children: t("incompatibleVersion")
2758
2788
  }
@@ -4434,6 +4464,9 @@ var getCopyrightStyles = ({ theme }) => {
4434
4464
  var getMenuStyles = ({ theme }) => {
4435
4465
  const menuStyle = css5({
4436
4466
  backgroundColor: theme.colors.backgroundBaseSubdued,
4467
+ ".euiSideNavItem--trunk > .euiSideNavItem__items": {
4468
+ marginInline: theme.base
4469
+ },
4437
4470
  ".euiSideNavItem--branch": {
4438
4471
  "&:after": {
4439
4472
  backgroundColor: theme.colors.borderBaseSubdued,
@@ -4461,8 +4494,7 @@ var getMenuItemStyles = ({ theme, isDarkModeActive }) => {
4461
4494
  color: theme.colors.textSubdued,
4462
4495
  padding: `${theme.base * 0.5}px ${theme.base * 0.75}px`
4463
4496
  };
4464
- const baseSubMenuStyles = {
4465
- ...baseStyles,
4497
+ const subItemDash = {
4466
4498
  ":after": {
4467
4499
  content: "''",
4468
4500
  top: "50%",
@@ -4474,6 +4506,10 @@ var getMenuItemStyles = ({ theme, isDarkModeActive }) => {
4474
4506
  transform: "translateY(-50%)"
4475
4507
  }
4476
4508
  };
4509
+ const baseSubMenuStyles = {
4510
+ ...baseStyles,
4511
+ ...subItemDash
4512
+ };
4477
4513
  const menuItemStyle = css5({
4478
4514
  ...baseStyles
4479
4515
  });
@@ -4503,17 +4539,34 @@ var getMenuItemStyles = ({ theme, isDarkModeActive }) => {
4503
4539
  marginLeft: `${theme.size.xs}`,
4504
4540
  paddingLeft: `${theme.size.s}`
4505
4541
  });
4506
- const subMenuHeaderStyle = css5({
4542
+ const subMenuHeader = {
4507
4543
  ...baseStyles,
4508
4544
  color: theme.colors.link,
4509
4545
  fontWeight: theme.font.weight.medium
4546
+ };
4547
+ const subMenuHeaderStyle = css5({
4548
+ ...subMenuHeader
4549
+ });
4550
+ const subMenuSubItemHeaderStyle = css5({
4551
+ ...subMenuHeader,
4552
+ ...{
4553
+ ":after": {
4554
+ content: "''",
4555
+ left: 0,
4556
+ width: "4px",
4557
+ height: "1px",
4558
+ backgroundColor: theme.colors.borderBaseSubdued,
4559
+ position: "absolute"
4560
+ }
4561
+ }
4510
4562
  });
4511
4563
  return {
4512
4564
  menuItemStyle,
4513
4565
  selectedMenuItem,
4514
4566
  selectedSubMenuItem,
4515
4567
  subMenuItemStyle,
4516
- subMenuHeaderStyle
4568
+ subMenuHeaderStyle,
4569
+ subMenuSubItemHeaderStyle
4517
4570
  };
4518
4571
  };
4519
4572
 
@@ -4937,12 +4990,19 @@ var WfoMenuItemLink = ({
4937
4990
  isSubItem,
4938
4991
  hasSubItems
4939
4992
  }) => {
4940
- const { menuItemStyle, selectedMenuItem, selectedSubMenuItem, subMenuHeaderStyle, subMenuItemStyle } = useWithOrchestratorTheme(getMenuItemStyles);
4993
+ const {
4994
+ menuItemStyle,
4995
+ selectedMenuItem,
4996
+ selectedSubMenuItem,
4997
+ subMenuHeaderStyle,
4998
+ subMenuItemStyle,
4999
+ subMenuSubItemHeaderStyle
5000
+ } = useWithOrchestratorTheme(getMenuItemStyles);
4941
5001
  const getMenuItemStyle = () => {
4942
- if (isSubItem) {
5002
+ if (isSubItem && (!hasSubItems || !isSelected)) {
4943
5003
  return isSelected ? selectedSubMenuItem : subMenuItemStyle;
4944
5004
  } else if (isSelected && hasSubItems) {
4945
- return subMenuHeaderStyle;
5005
+ return isSubItem ? subMenuSubItemHeaderStyle : subMenuHeaderStyle;
4946
5006
  } else {
4947
5007
  return isSelected ? selectedMenuItem : menuItemStyle;
4948
5008
  }
@@ -5604,6 +5664,7 @@ var WfoRadio = ({ pydanticFormField, onChange, value, disabled }) => {
5604
5664
  };
5605
5665
 
5606
5666
  // src/components/WfoPydanticForm/fields/WfoInteger.tsx
5667
+ import React12, { useEffect as useEffect3 } from "react";
5607
5668
  import _2 from "lodash";
5608
5669
  import { getFormFieldIdWithPath as getFormFieldIdWithPath2 } from "pydantic-forms";
5609
5670
  import { EuiFieldNumber } from "@elastic/eui";
@@ -5625,21 +5686,38 @@ var WfoInteger = ({ pydanticFormField, onChange, value, disabled }) => {
5625
5686
  const { formFieldBaseStyle } = useWithOrchestratorTheme(getFormFieldsBaseStyle2);
5626
5687
  const fieldName = getFormFieldIdWithPath2(pydanticFormField.id);
5627
5688
  const fieldValue = _2.isObject(value) && _2.has(value, fieldName) ? _2.get(value, fieldName) : value;
5689
+ const [userInput, setUserInput] = React12.useState();
5690
+ useEffect3(() => {
5691
+ if (fieldValue !== void 0 && fieldValue !== null) {
5692
+ setUserInput(fieldValue);
5693
+ } else {
5694
+ setUserInput("");
5695
+ }
5696
+ }, [fieldValue, value]);
5697
+ const handleOnChange = (event) => {
5698
+ const newValue = event.target.value;
5699
+ if (value === null && newValue !== value) {
5700
+ onChange(parseInt(newValue));
5701
+ }
5702
+ setUserInput(newValue);
5703
+ };
5628
5704
  return /* @__PURE__ */ jsx84(
5629
5705
  EuiFieldNumber,
5630
5706
  {
5707
+ placeholder: "Enter a number",
5631
5708
  "data-testid": pydanticFormField.id,
5632
5709
  css: formFieldBaseStyle,
5633
5710
  name: pydanticFormField.id,
5634
- onChange: (event) => onChange(event.target.value ? parseInt(event.target.value) : null),
5635
- value: fieldValue,
5711
+ onBlur: (event) => onChange(event.target.value ? parseInt(event.target.value) : null),
5712
+ onChange: handleOnChange,
5713
+ value: userInput,
5636
5714
  disabled
5637
5715
  }
5638
5716
  );
5639
5717
  };
5640
5718
 
5641
5719
  // src/components/WfoPydanticForm/fields/WfoReactSelect/WfoReactSelect.tsx
5642
- import { useEffect as useEffect3, useState as useState8 } from "react";
5720
+ import { useEffect as useEffect4, useState as useState8 } from "react";
5643
5721
  import ReactSelect, { components } from "react-select";
5644
5722
  import { EuiButtonIcon as EuiButtonIcon3 } from "@elastic/eui";
5645
5723
 
@@ -5732,7 +5810,7 @@ var WfoReactSelect = ({
5732
5810
  }) => {
5733
5811
  const initialValue = options.find((option) => option.value === value);
5734
5812
  const [selectedValue, setSelectedValue] = useState8(initialValue || null);
5735
- useEffect3(() => {
5813
+ useEffect4(() => {
5736
5814
  const preSelectedValue = options.find((option) => option.value === value);
5737
5815
  if (preSelectedValue !== selectedValue) {
5738
5816
  setSelectedValue(preSelectedValue || null);
@@ -5805,11 +5883,11 @@ var WfoDropdown = ({ onChange, pydanticFormField, value }) => {
5805
5883
  };
5806
5884
 
5807
5885
  // src/components/WfoPydanticForm/fields/WfoMultiCheckboxField.tsx
5808
- import { useEffect as useEffect4, useState as useState9 } from "react";
5886
+ import { useEffect as useEffect5, useState as useState9 } from "react";
5809
5887
  import { EuiCheckboxGroup } from "@elastic/eui";
5810
5888
  import { jsx as jsx87 } from "@emotion/react/jsx-runtime";
5811
5889
  var WfoMultiCheckboxField = ({ pydanticFormField, onChange, value }) => {
5812
- useEffect4(() => {
5890
+ useEffect5(() => {
5813
5891
  const getInitialMap = () => {
5814
5892
  const initialIdMap = (value || []).reduce((idMap, id2) => {
5815
5893
  idMap[id2] = true;
@@ -6396,7 +6474,7 @@ import { useContext as useContext4 } from "react";
6396
6474
  // src/components/WfoBadges/WfoHeaderBadge/WfoHeaderBadge.tsx
6397
6475
  import { jsx as jsx96 } from "@emotion/react/jsx-runtime";
6398
6476
  var WfoHeaderBadge = ({ children, ...restProps }) => {
6399
- const css50 = restProps.iconType ? {
6477
+ const css49 = restProps.iconType ? {
6400
6478
  height: 24,
6401
6479
  display: "flex",
6402
6480
  paddingLeft: 0
@@ -6404,7 +6482,7 @@ var WfoHeaderBadge = ({ children, ...restProps }) => {
6404
6482
  height: 24,
6405
6483
  display: "flex"
6406
6484
  };
6407
- return /* @__PURE__ */ jsx96(WfoBadge, { ...restProps, css: css50, children });
6485
+ return /* @__PURE__ */ jsx96(WfoBadge, { ...restProps, css: css49, children });
6408
6486
  };
6409
6487
 
6410
6488
  // src/components/WfoBadges/WfoEnvironmentBadge/WfoEnvironmentBadge.tsx
@@ -6516,7 +6594,7 @@ var WfoWorkflowTargetBadge = ({ target }) => {
6516
6594
  };
6517
6595
 
6518
6596
  // src/components/WfoBadges/WfoWebsocketStatusBadge/WfoWebsocketStatusBadge.tsx
6519
- import { useCallback as useCallback5, useEffect as useEffect5 } from "react";
6597
+ import { useCallback as useCallback5, useEffect as useEffect6 } from "react";
6520
6598
  import { useDispatch as useDispatch2 } from "react-redux";
6521
6599
  import { useTranslations as useTranslations13 } from "next-intl";
6522
6600
  import { EuiToolTip as EuiToolTip4 } from "@elastic/eui";
@@ -6552,7 +6630,7 @@ var WfoWebsocketStatusBadge = ({ hideWhenConnected = false }) => {
6552
6630
  const reconnect = useCallback5(() => {
6553
6631
  dispatch(orchestratorApi.util.resetApiState());
6554
6632
  }, [dispatch]);
6555
- useEffect5(() => {
6633
+ useEffect6(() => {
6556
6634
  const handleVisibilityChange = () => {
6557
6635
  if (document.visibilityState === "visible" && !websocketConnected) {
6558
6636
  reconnect();
@@ -6953,7 +7031,7 @@ var WfoKeyCell = ({ value, rowNumber }) => {
6953
7031
  };
6954
7032
 
6955
7033
  // src/components/WfoKeyValueTable/WfoValueCell.tsx
6956
- import React17 from "react";
7034
+ import React18 from "react";
6957
7035
  import { EuiCopy } from "@elastic/eui";
6958
7036
 
6959
7037
  // src/icons/WfoClipboardCopy.tsx
@@ -6982,7 +7060,7 @@ var WfoValueCell = ({ value, textToCopy, rowNumber, enableCopyIcon }) => {
6982
7060
  valueCellStyle
6983
7061
  } = useWithOrchestratorTheme(getStyles5);
6984
7062
  const shouldRenderCopyColumn = enableCopyIcon && textToCopy;
6985
- const valueToRender = typeof value === "string" || typeof value === "number" || React17.isValidElement(value) ? value : JSON.stringify(value);
7063
+ const valueToRender = typeof value === "string" || typeof value === "number" || React18.isValidElement(value) ? value : JSON.stringify(value);
6986
7064
  const copyText = typeof textToCopy === "object" ? JSON.stringify(textToCopy) : textToCopy;
6987
7065
  return /* @__PURE__ */ jsxs55("div", { css: [getBackgroundColorStyleForRow(rowNumber), valueColumnStyle], children: [
6988
7066
  /* @__PURE__ */ jsx113("div", { css: valueCellStyle, children: valueToRender }),
@@ -6991,7 +7069,7 @@ var WfoValueCell = ({ value, textToCopy, rowNumber, enableCopyIcon }) => {
6991
7069
  {
6992
7070
  width: clipboardIconSize,
6993
7071
  height: clipboardIconSize,
6994
- color: theme.colors.backgroundBaseDisabled
7072
+ color: theme.colors.backgroundBaseAccent
6995
7073
  }
6996
7074
  ) }) }) })
6997
7075
  ] });
@@ -7033,7 +7111,7 @@ var WfoValueOnlyTable = ({ values, showCopyToClipboardIcon = false }) => {
7033
7111
  };
7034
7112
 
7035
7113
  // src/components/WfoSearchBar/WfoSearchField.tsx
7036
- import { useEffect as useEffect6, useRef as useRef2, useState as useState10 } from "react";
7114
+ import { useEffect as useEffect7, useRef as useRef2, useState as useState10 } from "react";
7037
7115
  import { useTranslations as useTranslations18 } from "next-intl";
7038
7116
  import { EuiFieldSearch, EuiFormRow as EuiFormRow3 } from "@elastic/eui";
7039
7117
  import { jsx as jsx116 } from "@emotion/react/jsx-runtime";
@@ -7043,10 +7121,10 @@ var WfoSearchField = ({ queryString, queryIsValid = true, onUpdateQueryString })
7043
7121
  const { formFieldBaseStyle } = useWithOrchestratorTheme(getFormFieldsBaseStyle);
7044
7122
  const handleSearch = useRef2((queryText) => onUpdateQueryString?.(queryText));
7045
7123
  const [currentQuery, setCurrentQuery] = useState10(queryString ?? "");
7046
- useEffect6(() => {
7124
+ useEffect7(() => {
7047
7125
  setCurrentQuery(queryString ?? "");
7048
7126
  }, [queryString]);
7049
- useEffect6(() => {
7127
+ useEffect7(() => {
7050
7128
  if (currentQuery === "") {
7051
7129
  handleSearch.current(currentQuery);
7052
7130
  }
@@ -7459,7 +7537,7 @@ var SubscriptionKeyValueBlock = ({ title, keyValues }) => {
7459
7537
  };
7460
7538
 
7461
7539
  // src/components/WfoSubscription/WfoInSyncField/WfoInSyncField.tsx
7462
- import { useContext as useContext5, useEffect as useEffect7, useState as useState11 } from "react";
7540
+ import { useContext as useContext5, useEffect as useEffect8, useState as useState11 } from "react";
7463
7541
  import { useTranslations as useTranslations24 } from "next-intl";
7464
7542
  import Link5 from "next/link";
7465
7543
  import { EuiButton as EuiButton7, EuiContextMenuItem, EuiLoadingSpinner, EuiToolTip as EuiToolTip6 } from "@elastic/eui";
@@ -7614,7 +7692,7 @@ var WfoInSyncField = ({ subscriptionDetail, compactMode = false, setPopover }) =
7614
7692
  const [setSubscriptionInSync, { isLoading }] = useSetSubscriptionInSyncMutation();
7615
7693
  const { showToastMessage } = useShowToastMessage();
7616
7694
  const { showConfirmDialog } = useContext5(ConfirmationDialogContext);
7617
- useEffect7(() => {
7695
+ useEffect8(() => {
7618
7696
  setInSync(subscriptionDetail.insync);
7619
7697
  }, [subscriptionDetail.insync]);
7620
7698
  const setInSyncAction = () => {
@@ -7697,7 +7775,7 @@ var WfoInSyncField = ({ subscriptionDetail, compactMode = false, setPopover }) =
7697
7775
  };
7698
7776
 
7699
7777
  // src/components/WfoSubscription/WfoProcessesTimeline.tsx
7700
- import React21 from "react";
7778
+ import React22 from "react";
7701
7779
  import { useTranslations as useTranslations25 } from "next-intl";
7702
7780
  import Link6 from "next/link";
7703
7781
  import { EuiComment, EuiCommentList, EuiFlexGroup as EuiFlexGroup10, EuiFlexItem as EuiFlexItem7, EuiSpacer as EuiSpacer11, EuiText as EuiText8 } from "@elastic/eui";
@@ -7825,7 +7903,7 @@ var WfoProcessesTimeline = ({ subscriptionDetailProcesses }) => {
7825
7903
  value: "DESC" /* DESC */
7826
7904
  }
7827
7905
  ];
7828
- const [selectedOption, setSelectedOption] = React21.useState(options[0]);
7906
+ const [selectedOption, setSelectedOption] = React22.useState(options[0]);
7829
7907
  const handleOnSelectOption = (option) => {
7830
7908
  setSelectedOption(option);
7831
7909
  };
@@ -8218,7 +8296,7 @@ var getWfoTableStyles = ({ theme, isDarkModeActive }) => {
8218
8296
  };
8219
8297
 
8220
8298
  // src/components/WfoTable/WfoTable/utils.ts
8221
- import { useEffect as useEffect8 } from "react";
8299
+ import { useEffect as useEffect9 } from "react";
8222
8300
  var getSortedVisibleColumns = (columnConfig, columnOrder, hiddenColumns) => {
8223
8301
  const tableHeadersEntries = Object.entries(
8224
8302
  toObjectWithSortedKeys(
@@ -8260,7 +8338,7 @@ var usePageIndexBoundsGuard = ({
8260
8338
  isLoading,
8261
8339
  pagination
8262
8340
  }) => {
8263
- useEffect8(() => {
8341
+ useEffect9(() => {
8264
8342
  if (!pagination) return;
8265
8343
  const { pageIndex, pageSize, totalItemCount, onChangePage } = pagination;
8266
8344
  const maxPage = Math.max(0, Math.floor(((totalItemCount ?? 1) - 1) / pageSize));
@@ -8740,7 +8818,7 @@ import { useTranslations as useTranslations29 } from "next-intl";
8740
8818
  import { EuiButtonEmpty as EuiButtonEmpty4, EuiFlexGroup as EuiFlexGroup11, EuiSpacer as EuiSpacer13 } from "@elastic/eui";
8741
8819
 
8742
8820
  // src/components/WfoTable/WfoTable/WfoGroupedTable/useGroupedTableConfig.tsx
8743
- import { useEffect as useEffect9, useRef as useRef6, useState as useState15 } from "react";
8821
+ import { useEffect as useEffect10, useRef as useRef6, useState as useState15 } from "react";
8744
8822
 
8745
8823
  // src/components/WfoTable/WfoTable/WfoGroupedTable/WfoExpandableRow.tsx
8746
8824
  import { useTranslations as useTranslations28 } from "next-intl";
@@ -8806,12 +8884,12 @@ var WfoExpandableRow = ({
8806
8884
  };
8807
8885
 
8808
8886
  // src/components/WfoTable/WfoTable/WfoGroupedTable/WfoExpandedGroupRow.tsx
8809
- import React30 from "react";
8887
+ import React31 from "react";
8810
8888
 
8811
8889
  // src/components/WfoTable/WfoTable/WfoGroupedTable/WfoGroupedTableGroups.tsx
8812
- import React29, { useImperativeHandle } from "react";
8890
+ import React30, { useImperativeHandle } from "react";
8813
8891
  import { jsx as jsx138 } from "@emotion/react/jsx-runtime";
8814
- var WfoGroupedTableGroups = React29.forwardRef(
8892
+ var WfoGroupedTableGroups = React30.forwardRef(
8815
8893
  ({ data, groupNameLabel, columnConfig, nestingLevel = 1, onExpandRowChange }, reference) => {
8816
8894
  const { expandedRowStyle } = useWithOrchestratorTheme(getWfoTableStyles);
8817
8895
  const { getNestingStyle } = useWithOrchestratorTheme(getWfoGroupedTableStyles);
@@ -8846,7 +8924,7 @@ WfoGroupedTableGroups.displayName = "WfoGroupedTableGroups";
8846
8924
 
8847
8925
  // src/components/WfoTable/WfoTable/WfoGroupedTable/WfoExpandedGroupRow.tsx
8848
8926
  import { Fragment as Fragment22, jsx as jsx139, jsxs as jsxs69 } from "@emotion/react/jsx-runtime";
8849
- var WfoExpandedGroupRow = React30.forwardRef(
8927
+ var WfoExpandedGroupRow = React31.forwardRef(
8850
8928
  ({ data, columnConfig, nestingLevel = 1, groupNameLabel, onExpandRowChange }, reference) => {
8851
8929
  const { expandedRowStyle } = useWithOrchestratorTheme(getWfoTableStyles);
8852
8930
  const { innerTableHeaderStyle, getNestingStyle } = useWithOrchestratorTheme(getWfoGroupedTableStyles);
@@ -8924,7 +9002,7 @@ var useGroupedTableConfig = ({
8924
9002
  const numberOfColumnsInnerTable = Object.keys(columnConfig).length;
8925
9003
  const notifyParentRef = useRef6(notifyParent);
8926
9004
  const groupsRef = useRef6(groups);
8927
- useEffect9(() => {
9005
+ useEffect10(() => {
8928
9006
  if (isExpanding) {
8929
9007
  groupReferences.current.forEach((ref) => {
8930
9008
  ref.expandAllRows();
@@ -8932,7 +9010,7 @@ var useGroupedTableConfig = ({
8932
9010
  setIsExpanding(false);
8933
9011
  }
8934
9012
  }, [isExpanding]);
8935
- useEffect9(() => {
9013
+ useEffect10(() => {
8936
9014
  if (notifyParentRef.current) {
8937
9015
  notifyParentRef.current(
8938
9016
  isAllGroupsExpanded && groupsRef.current.every(({ groupName }) => isAllSubgroupsExpanded.includes(groupName))
@@ -9473,6 +9551,7 @@ var WfoSubscriptionActions = ({
9473
9551
  compactMode = false
9474
9552
  }) => {
9475
9553
  const t = useTranslations33("subscriptions.detail.actions");
9554
+ const { theme } = useOrchestratorTheme();
9476
9555
  const [isPopoverOpen, setPopover] = useState18(false);
9477
9556
  const router = useRouter6();
9478
9557
  const disableQuery = isLoading || !isPopoverOpen && compactMode;
@@ -9493,7 +9572,7 @@ var WfoSubscriptionActions = ({
9493
9572
  const button = compactMode ? /* @__PURE__ */ jsx152(
9494
9573
  EuiButtonIcon8,
9495
9574
  {
9496
- iconType: () => /* @__PURE__ */ jsx152(WfoDotsHorizontal, {}),
9575
+ iconType: () => /* @__PURE__ */ jsx152(WfoDotsHorizontal, { color: theme.colors.textDisabled }),
9497
9576
  onClick: onButtonClick,
9498
9577
  "aria-label": "Row context menu",
9499
9578
  isLoading
@@ -9878,12 +9957,12 @@ var WfoProductBlockKeyValueRow = ({
9878
9957
  };
9879
9958
 
9880
9959
  // src/components/WfoSubscription/WfoSubscriptionDetailTree.tsx
9881
- import React41, { useState as useState21 } from "react";
9960
+ import React42, { useState as useState21 } from "react";
9882
9961
  import { useTranslations as useTranslations37 } from "next-intl";
9883
9962
  import { EuiCallOut as EuiCallOut3, EuiFlexGroup as EuiFlexGroup17, EuiFlexItem as EuiFlexItem13, EuiText as EuiText15 } from "@elastic/eui";
9884
9963
 
9885
9964
  // src/components/WfoButtonComboBox/WfoButtonComboBox.tsx
9886
- import { useEffect as useEffect10, useState as useState20 } from "react";
9965
+ import { useEffect as useEffect11, useState as useState20 } from "react";
9887
9966
  import { EuiPopover as EuiPopover4, EuiSelectable as EuiSelectable2, EuiSpacer as EuiSpacer16, EuiText as EuiText13 } from "@elastic/eui";
9888
9967
 
9889
9968
  // src/components/WfoButtonComboBox/styles.ts
@@ -9922,7 +10001,7 @@ var WfoButtonComboBox = ({
9922
10001
  const [isPopoverOpen, setPopoverOpen] = useState20(false);
9923
10002
  const [optionsState, setOptionsState] = useState20(options);
9924
10003
  const { selectableStyle, titleStyle } = useWithOrchestratorTheme(getWfoButtonComboBoxStyles);
9925
- useEffect10(() => {
10004
+ useEffect11(() => {
9926
10005
  if (!isPopoverOpen) {
9927
10006
  setOptionsState(options);
9928
10007
  }
@@ -9978,14 +10057,14 @@ function getTokenName(name) {
9978
10057
  }
9979
10058
 
9980
10059
  // src/components/WfoTree/WfoTree.tsx
9981
- import React40, { useEffect as useEffect11 } from "react";
10060
+ import React41, { useEffect as useEffect12 } from "react";
9982
10061
 
9983
10062
  // src/components/WfoTree/WfoTreeBranch.tsx
9984
- import React39 from "react";
10063
+ import React40 from "react";
9985
10064
  import { EuiListGroup } from "@elastic/eui";
9986
10065
 
9987
10066
  // src/components/WfoTree/WfoTreeNode.tsx
9988
- import React38 from "react";
10067
+ import React39 from "react";
9989
10068
  import { EuiFlexGroup as EuiFlexGroup16, EuiFlexItem as EuiFlexItem12, EuiIcon as EuiIcon3, EuiToken } from "@elastic/eui";
9990
10069
 
9991
10070
  // src/components/WfoTree/WfoTreeNodeListItem.tsx
@@ -9999,7 +10078,7 @@ var getStyles7 = ({ theme, toSecondaryColor }) => {
9999
10078
  cursor: "pointer"
10000
10079
  };
10001
10080
  const treeContainerStyle = {
10002
- width: 0,
10081
+ width: theme.size.m,
10003
10082
  marginTop: theme.size.s,
10004
10083
  marginRight: `-${theme.size.s}`
10005
10084
  };
@@ -10080,7 +10159,7 @@ import { jsx as jsx159, jsxs as jsxs82 } from "@emotion/react/jsx-runtime";
10080
10159
  var WfoTreeNode = ({ item, hasChildren, level }) => {
10081
10160
  const { theme } = useOrchestratorTheme();
10082
10161
  const { expandIconContainerStyle, treeContainerStyle } = useWithOrchestratorTheme(getStyles7);
10083
- const { expandedIds, collapseNode, expandNode, selectedIds } = React38.useContext(TreeContext);
10162
+ const { expandedIds, collapseNode, expandNode, selectedIds } = React39.useContext(TreeContext);
10084
10163
  const expanded = expandedIds.includes(item.id);
10085
10164
  const selected = selectedIds.includes(item.id);
10086
10165
  const expandIcon = expanded ? "arrowDown" : "arrowRight";
@@ -10101,7 +10180,7 @@ var WfoTreeNode = ({ item, hasChildren, level }) => {
10101
10180
  // src/components/WfoTree/WfoTreeBranch.tsx
10102
10181
  import { Fragment as Fragment32, jsx as jsx160, jsxs as jsxs83 } from "@emotion/react/jsx-runtime";
10103
10182
  var WfoTreeBranch = ({ item, level }) => {
10104
- const { expandedIds } = React39.useContext(TreeContext);
10183
+ const { expandedIds } = React40.useContext(TreeContext);
10105
10184
  const selected = expandedIds.includes(item.id);
10106
10185
  const { productBlockTreeWidth } = useWithOrchestratorTheme(getSubscriptionDetailStyles);
10107
10186
  const hasChildren = item.children && item.children.length !== 0;
@@ -10121,8 +10200,8 @@ var WfoTreeBranch = ({ item, level }) => {
10121
10200
  // src/components/WfoTree/WfoTree.tsx
10122
10201
  import { jsx as jsx161 } from "@emotion/react/jsx-runtime";
10123
10202
  var WfoTree = ({ treeBlocks, depthList }) => {
10124
- const { setDepths } = React40.useContext(TreeContext);
10125
- useEffect11(() => {
10203
+ const { setDepths } = React41.useContext(TreeContext);
10204
+ useEffect12(() => {
10126
10205
  setDepths(depthList);
10127
10206
  }, [setDepths, TreeContext]);
10128
10207
  return /* @__PURE__ */ jsx161("div", { style: { width: "500px" }, children: treeBlocks.map((item) => /* @__PURE__ */ jsx161(WfoTreeBranch, { item, level: 0 }, item.id)) });
@@ -10200,7 +10279,7 @@ var WfoSubscriptionDetailTree = ({
10200
10279
  const { theme } = useOrchestratorTheme();
10201
10280
  const [, setSelectedTreeNode] = useState21(-1);
10202
10281
  const { productBlockTreeWidth } = useWithOrchestratorTheme(getSubscriptionDetailStyles);
10203
- const { selectedIds, expandAll, resetSelection, selectAll, selectIds, deselectIds } = React41.useContext(
10282
+ const { selectedIds, expandAll, resetSelection, selectAll, selectIds, deselectIds } = React42.useContext(
10204
10283
  TreeContext
10205
10284
  );
10206
10285
  let tree = null;
@@ -10447,7 +10526,7 @@ var customerDescriptionsApi = orchestratorApi.injectEndpoints({
10447
10526
  var { useSetCustomerDescriptionMutation, useUpdateCustomerDescriptionMutation } = customerDescriptionsApi;
10448
10527
 
10449
10528
  // src/components/WfoInlineEdit/WfoInlineEdit.tsx
10450
- import { useEffect as useEffect12, useState as useState22 } from "react";
10529
+ import { useEffect as useEffect13, useState as useState22 } from "react";
10451
10530
  import { EuiInlineEditText } from "@elastic/eui";
10452
10531
  import { jsx as jsx164 } from "@emotion/react/jsx-runtime";
10453
10532
  var WfoInlineEdit = ({ value, onlyShowOnHover = false, onSave = () => {
@@ -10462,7 +10541,7 @@ var WfoInlineEdit = ({ value, onlyShowOnHover = false, onSave = () => {
10462
10541
  setValue(value);
10463
10542
  setIsTooltipVisible(true);
10464
10543
  };
10465
- useEffect12(() => {
10544
+ useEffect13(() => {
10466
10545
  setValue(value);
10467
10546
  }, [value]);
10468
10547
  return /* @__PURE__ */ jsx164(
@@ -10892,7 +10971,7 @@ var WfoFirstPartUUID = ({ UUID, showCopyIcon = true }) => {
10892
10971
  const { theme } = useOrchestratorTheme();
10893
10972
  return /* @__PURE__ */ jsxs88("span", { css: uuidFieldStyle, children: [
10894
10973
  getFirstUuidPart(UUID),
10895
- showCopyIcon && /* @__PURE__ */ jsx170(EuiCopy2, { textToCopy: UUID, children: (copy) => /* @__PURE__ */ jsx170("div", { className: COPY_ICON_CLASS, onClick: copy, css: clickable, children: /* @__PURE__ */ jsx170(WfoClipboardCopy, { width: 16, height: 16, color: theme.colors.backgroundBaseDisabled }) }) })
10974
+ showCopyIcon && /* @__PURE__ */ jsx170(EuiCopy2, { textToCopy: UUID, children: (copy) => /* @__PURE__ */ jsx170("div", { className: COPY_ICON_CLASS, onClick: copy, css: clickable, children: /* @__PURE__ */ jsx170(WfoClipboardCopy, { width: 16, height: 16, color: theme.colors.backgroundBaseAccent }) }) })
10896
10975
  ] });
10897
10976
  };
10898
10977
 
@@ -10907,13 +10986,13 @@ var WfoInlineJson = ({ data }) => {
10907
10986
  };
10908
10987
 
10909
10988
  // src/components/WfoTable/WfoRowContextMenu/WfoRowContextMenu.tsx
10910
- import { useEffect as useEffect13, useRef as useRef7, useState as useState24 } from "react";
10989
+ import { useEffect as useEffect14, useRef as useRef7, useState as useState24 } from "react";
10911
10990
  import { EuiButtonIcon as EuiButtonIcon10, EuiContextMenu as EuiContextMenu2, EuiPopover as EuiPopover5 } from "@elastic/eui";
10912
10991
  import { jsx as jsx172 } from "@emotion/react/jsx-runtime";
10913
10992
  var WfoRowContextMenu = ({ items, onOpenContextMenu }) => {
10914
10993
  const [isOpen, setIsOpen] = useState24(false);
10915
10994
  const onOpenContextMenuRef = useRef7(onOpenContextMenu);
10916
- useEffect13(() => {
10995
+ useEffect14(() => {
10917
10996
  if (isOpen) {
10918
10997
  onOpenContextMenuRef.current?.();
10919
10998
  }
@@ -10967,7 +11046,7 @@ var toSortedTableColumnConfig = (columnConfig, columnKeys) => columnKeys.reduce(
10967
11046
  }, {});
10968
11047
 
10969
11048
  // src/components/WfoTable/WfoAdvancedTable/WfoAdvancedTable.tsx
10970
- import { useEffect as useEffect14, useState as useState25 } from "react";
11049
+ import { useEffect as useEffect15, useState as useState25 } from "react";
10971
11050
  import { useTranslations as useTranslations39 } from "next-intl";
10972
11051
  import { EuiButton as EuiButton9, EuiButtonIcon as EuiButtonIcon11, EuiFlexGroup as EuiFlexGroup18, EuiFlexItem as EuiFlexItem15, EuiSpacer as EuiSpacer18, EuiText as EuiText16 } from "@elastic/eui";
10973
11052
  import { Fragment as Fragment34, jsx as jsx174, jsxs as jsxs89 } from "@emotion/react/jsx-runtime";
@@ -10992,7 +11071,7 @@ var WfoAdvancedTable = ({
10992
11071
  const [selectedDataForDetailModal, setSelectedDataForDetailModal] = useState25(void 0);
10993
11072
  const [showSearchModal, setShowSearchModal] = useState25(false);
10994
11073
  const t = useTranslations39("common");
10995
- useEffect14(() => {
11074
+ useEffect15(() => {
10996
11075
  if (defaultHiddenColumns) {
10997
11076
  setHiddenColumns(defaultHiddenColumns);
10998
11077
  }
@@ -11002,7 +11081,7 @@ var WfoAdvancedTable = ({
11002
11081
  viewDetails: {
11003
11082
  columnType: "control" /* CONTROL */,
11004
11083
  width: "36px",
11005
- renderControl: (row) => /* @__PURE__ */ jsx174(EuiFlexItem15, { css: { cursor: "pointer" }, onClick: () => setSelectedDataForDetailModal(row), children: /* @__PURE__ */ jsx174(WfoArrowsExpand, { color: theme.colors.borderBasePlain }) })
11084
+ renderControl: (row) => /* @__PURE__ */ jsx174(EuiFlexItem15, { css: { cursor: "pointer" }, onClick: () => setSelectedDataForDetailModal(row), children: /* @__PURE__ */ jsx174(WfoArrowsExpand, { color: theme.colors.textDisabled }) })
11006
11085
  }
11007
11086
  };
11008
11087
  const tableColumnsWithControlColumns = {
@@ -11439,7 +11518,7 @@ import Link12 from "next/link";
11439
11518
  import { useRouter as useRouter17 } from "next/router";
11440
11519
 
11441
11520
  // src/pages/metadata/WfoProductBlocksPage.tsx
11442
- import { useEffect as useEffect15, useState as useState27 } from "react";
11521
+ import { useEffect as useEffect16, useState as useState27 } from "react";
11443
11522
  import { useTranslations as useTranslations42 } from "next-intl";
11444
11523
  import { EuiBadgeGroup as EuiBadgeGroup2 } from "@elastic/eui";
11445
11524
 
@@ -11510,7 +11589,7 @@ var WfoProductBlocksPage = () => {
11510
11589
  METADATA_PRODUCT_BLOCKS_TABLE_LOCAL_STORAGE_KEY
11511
11590
  );
11512
11591
  const [updateProductBlock] = useUpdateProductBlockMutation();
11513
- useEffect15(() => {
11592
+ useEffect16(() => {
11514
11593
  const storedConfig = getStoredTableConfig();
11515
11594
  if (storedConfig) {
11516
11595
  setTableDefaults(storedConfig);
@@ -11695,7 +11774,7 @@ var WfoProductBlocksPage = () => {
11695
11774
  };
11696
11775
 
11697
11776
  // src/pages/metadata/WfoResourceTypesPage.tsx
11698
- import { useEffect as useEffect16, useState as useState28 } from "react";
11777
+ import { useEffect as useEffect17, useState as useState28 } from "react";
11699
11778
  import { useTranslations as useTranslations43 } from "next-intl";
11700
11779
  import { EuiBadgeGroup as EuiBadgeGroup3 } from "@elastic/eui";
11701
11780
  import { Fragment as Fragment39, jsx as jsx187, jsxs as jsxs92 } from "@emotion/react/jsx-runtime";
@@ -11709,7 +11788,7 @@ var WfoResourceTypesPage = () => {
11709
11788
  METADATA_RESOURCE_TYPES_TABLE_LOCAL_STORAGE_KEY
11710
11789
  );
11711
11790
  const [updateResourceType] = useUpdateResourceTypeMutation();
11712
- useEffect16(() => {
11791
+ useEffect17(() => {
11713
11792
  const storedConfig = getStoredTableConfig();
11714
11793
  if (storedConfig) {
11715
11794
  setTableDefaults(storedConfig);
@@ -11845,7 +11924,7 @@ var WfoResourceTypesPage = () => {
11845
11924
  };
11846
11925
 
11847
11926
  // src/pages/metadata/WfoProductsPage.tsx
11848
- import { useEffect as useEffect17, useState as useState29 } from "react";
11927
+ import { useEffect as useEffect18, useState as useState29 } from "react";
11849
11928
  import { useTranslations as useTranslations44 } from "next-intl";
11850
11929
  import { Fragment as Fragment40, jsx as jsx188, jsxs as jsxs93 } from "@emotion/react/jsx-runtime";
11851
11930
  var PRODUCT_FIELD_NAME = "name";
@@ -11856,7 +11935,7 @@ var WfoProductsPage = () => {
11856
11935
  const [tableDefaults, setTableDefaults] = useState29();
11857
11936
  const getStoredTableConfig = useStoredTableConfig(METADATA_PRODUCT_TABLE_LOCAL_STORAGE_KEY);
11858
11937
  const [updateProduct] = useUpdateProductMutation();
11859
- useEffect17(() => {
11938
+ useEffect18(() => {
11860
11939
  const storedConfig = getStoredTableConfig();
11861
11940
  if (storedConfig) {
11862
11941
  setTableDefaults(storedConfig);
@@ -12025,7 +12104,7 @@ var WfoProductsPage = () => {
12025
12104
  };
12026
12105
 
12027
12106
  // src/pages/metadata/WfoWorkflowsPage.tsx
12028
- import { useEffect as useEffect18, useState as useState30 } from "react";
12107
+ import { useEffect as useEffect19, useState as useState30 } from "react";
12029
12108
  import { useTranslations as useTranslations45 } from "next-intl";
12030
12109
  import { EuiBadgeGroup as EuiBadgeGroup4 } from "@elastic/eui";
12031
12110
 
@@ -12064,7 +12143,7 @@ var WfoWorkflowsPage = () => {
12064
12143
  const [tableDefaults, setTableDefaults] = useState30();
12065
12144
  const getStoredTableConfig = useStoredTableConfig(METADATA_WORKFLOWS_TABLE_LOCAL_STORAGE_KEY);
12066
12145
  const [updateWorkflow] = useUpdateWorkflowMutation();
12067
- useEffect18(() => {
12146
+ useEffect19(() => {
12068
12147
  const storedConfig = getStoredTableConfig();
12069
12148
  if (storedConfig) {
12070
12149
  setTableDefaults(storedConfig);
@@ -12219,7 +12298,7 @@ var WfoWorkflowsPage = () => {
12219
12298
  };
12220
12299
 
12221
12300
  // src/pages/metadata/WfoTasksPage.tsx
12222
- import { useEffect as useEffect19, useState as useState31 } from "react";
12301
+ import { useEffect as useEffect20, useState as useState31 } from "react";
12223
12302
  import { useTranslations as useTranslations46 } from "next-intl";
12224
12303
  import { useRouter as useRouter8 } from "next/router";
12225
12304
  import { EuiBadgeGroup as EuiBadgeGroup5, EuiButtonIcon as EuiButtonIcon12, EuiContextMenuItem as EuiContextMenuItem3 } from "@elastic/eui";
@@ -12303,7 +12382,7 @@ var WfoTasksPage = () => {
12303
12382
  const [tableDefaults, setTableDefaults] = useState31();
12304
12383
  const getStoredTableConfig = useStoredTableConfig(METADATA_TASKS_TABLE_LOCAL_STORAGE_KEY);
12305
12384
  const [updateWorkflow] = useUpdateWorkflowMutation();
12306
- useEffect19(() => {
12385
+ useEffect20(() => {
12307
12386
  const storedConfig = getStoredTableConfig();
12308
12387
  if (storedConfig) {
12309
12388
  setTableDefaults(storedConfig);
@@ -12472,7 +12551,7 @@ var WfoTasksPage = () => {
12472
12551
  };
12473
12552
 
12474
12553
  // src/pages/metadata/WfoScheduledTasksPage.tsx
12475
- import { useEffect as useEffect20, useState as useState32 } from "react";
12554
+ import { useEffect as useEffect21, useState as useState32 } from "react";
12476
12555
  import { useTranslations as useTranslations47 } from "next-intl";
12477
12556
  import { useRouter as useRouter9 } from "next/router";
12478
12557
  import { EuiButton as EuiButton10, EuiFlexGroup as EuiFlexGroup19, EuiFlexItem as EuiFlexItem16 } from "@elastic/eui";
@@ -12494,7 +12573,7 @@ var WfoScheduledTasksPage = () => {
12494
12573
  showToastMessage("ERROR" /* ERROR */, "", tError("failedDeletingScheduledTask"));
12495
12574
  console.error("Failed to delete scheduled task.", mutationState.error);
12496
12575
  }
12497
- useEffect20(() => {
12576
+ useEffect21(() => {
12498
12577
  const storedConfig = getStoredTableConfig();
12499
12578
  if (storedConfig) {
12500
12579
  setTableDefaults(storedConfig);
@@ -13035,7 +13114,7 @@ var WfoProcessListSubscriptionsCell = ({
13035
13114
  import { useRef as useRef9 } from "react";
13036
13115
 
13037
13116
  // src/pages/processes/WfoProcessDetail.tsx
13038
- import { useContext as useContext8, useEffect as useEffect21, useRef as useRef8 } from "react";
13117
+ import { useContext as useContext8, useEffect as useEffect22, useRef as useRef8 } from "react";
13039
13118
  import { useTranslations as useTranslations50 } from "next-intl";
13040
13119
  import { useRouter as useRouter11 } from "next/router";
13041
13120
  import { EuiButton as EuiButton11, EuiFlexGroup as EuiFlexGroup21, EuiPanel as EuiPanel2, EuiSpacer as EuiSpacer20, EuiText as EuiText17 } from "@elastic/eui";
@@ -13139,7 +13218,7 @@ var ProcessHeaderValue = ({ translationKey, value = "" }) => {
13139
13218
  };
13140
13219
  function useHasPreviousRoute() {
13141
13220
  const hasPrev = useRef8(false);
13142
- useEffect21(() => {
13221
+ useEffect22(() => {
13143
13222
  if (document.referrer && document.referrer !== window.location.href) {
13144
13223
  hasPrev.current = true;
13145
13224
  }
@@ -13388,7 +13467,7 @@ import { useRouter as useRouter12 } from "next/router";
13388
13467
  import { PydanticForm as PydanticForm3 } from "pydantic-forms";
13389
13468
 
13390
13469
  // src/components/WfoPydanticForm/Footer.tsx
13391
- import { useCallback as useCallback6, useContext as useContext9, useEffect as useEffect22 } from "react";
13470
+ import { useCallback as useCallback6, useContext as useContext9, useEffect as useEffect23 } from "react";
13392
13471
  import { useTranslations as useTranslations52 } from "next-intl";
13393
13472
  import { EuiButton as EuiButton12, EuiFlexGroup as EuiFlexGroup22, EuiHorizontalRule as EuiHorizontalRule5 } from "@elastic/eui";
13394
13473
 
@@ -13432,7 +13511,7 @@ var Footer = ({ onCancel, onPrevious, hasNext, hasPrevious, isTask = false, butt
13432
13511
  }
13433
13512
  }, [onCancel, showConfirmDialog, t]);
13434
13513
  const { next, previous } = buttons || {};
13435
- useEffect22(() => {
13514
+ useEffect23(() => {
13436
13515
  const handleKeyDown = (event) => {
13437
13516
  const isPrimary = event.metaKey || event.ctrlKey;
13438
13517
  if (isPrimary && event.key === "ArrowLeft") {
@@ -13604,7 +13683,7 @@ var WfoPydanticForm = ({ processName, startProcessPayload, isTask }) => {
13604
13683
  };
13605
13684
 
13606
13685
  // src/components/WfoWorkflowSteps/WfoStep/WfoStep.tsx
13607
- import React60, { useCallback as useCallback10, useState as useState34 } from "react";
13686
+ import React61, { useCallback as useCallback10, useState as useState34 } from "react";
13608
13687
  import { useTranslations as useTranslations55 } from "next-intl";
13609
13688
  import { EuiFlexGroup as EuiFlexGroup23, EuiFlexItem as EuiFlexItem19, EuiPanel as EuiPanel3, EuiText as EuiText18 } from "@elastic/eui";
13610
13689
 
@@ -13929,7 +14008,7 @@ var WfoStepForm = ({ userInputForm, isTask, processId, userPermissions }) => {
13929
14008
 
13930
14009
  // src/components/WfoWorkflowSteps/WfoStep/WfoStep.tsx
13931
14010
  import { Fragment as Fragment47, jsx as jsx203, jsxs as jsxs104 } from "@emotion/react/jsx-runtime";
13932
- var WfoStep = React60.forwardRef(
14011
+ var WfoStep = React61.forwardRef(
13933
14012
  ({
13934
14013
  stepListItem,
13935
14014
  onToggleStepDetail,
@@ -14025,9 +14104,9 @@ var WfoStep = React60.forwardRef(
14025
14104
  WfoStep.displayName = "WfoStep";
14026
14105
 
14027
14106
  // src/components/WfoWorkflowSteps/WfoStepList/WfoStepList.tsx
14028
- import React61, { useImperativeHandle as useImperativeHandle2, useRef as useRef10 } from "react";
14107
+ import React62, { useImperativeHandle as useImperativeHandle2, useRef as useRef10 } from "react";
14029
14108
  import { Fragment as Fragment48, jsx as jsx204, jsxs as jsxs105 } from "@emotion/react/jsx-runtime";
14030
- var WfoStepList = React61.forwardRef(
14109
+ var WfoStepList = React62.forwardRef(
14031
14110
  ({
14032
14111
  stepListItems,
14033
14112
  showHiddenKeys,
@@ -14096,11 +14175,11 @@ var WfoStepList = React61.forwardRef(
14096
14175
  WfoStepList.displayName = "WfoStepList";
14097
14176
 
14098
14177
  // src/components/WfoWorkflowSteps/WfoWorkflowStepList/WfoWorkflowStepList.tsx
14099
- import React63, { useEffect as useEffect24, useState as useState36 } from "react";
14178
+ import React64, { useEffect as useEffect25, useState as useState36 } from "react";
14100
14179
  import { useTranslations as useTranslations58 } from "next-intl";
14101
14180
 
14102
14181
  // src/components/WfoDiff/WfoDiff.tsx
14103
- import { useCallback as useCallback11, useEffect as useEffect23, useMemo as useMemo4, useState as useState35 } from "react";
14182
+ import { useCallback as useCallback11, useEffect as useEffect24, useMemo as useMemo4, useState as useState35 } from "react";
14104
14183
  import { Diff, Hunk, parseDiff, tokenize } from "react-diff-view";
14105
14184
  import "react-diff-view/style/index.css";
14106
14185
  import { useTranslations as useTranslations56 } from "next-intl";
@@ -14177,7 +14256,7 @@ var WfoDiff = ({ oldText, newText, syntax }) => {
14177
14256
  return void 0;
14178
14257
  }
14179
14258
  }, [hunks, syntax]);
14180
- useEffect23(() => {
14259
+ useEffect24(() => {
14181
14260
  updateDiffText();
14182
14261
  }, [updateDiffText, showFull]);
14183
14262
  return /* @__PURE__ */ jsxs106("div", { children: [
@@ -14268,7 +14347,7 @@ var WfoProcessSubscriptionDelta = ({ processId }) => {
14268
14347
  }
14269
14348
  );
14270
14349
  };
14271
- var WfoWorkflowStepList = React63.forwardRef(
14350
+ var WfoWorkflowStepList = React64.forwardRef(
14272
14351
  ({ steps = [], lastStatus, traceBack, processId, isTask, userInputForm, userPermissions }, reference) => {
14273
14352
  const [showHiddenKeys, setShowHiddenKeys] = useState36(false);
14274
14353
  const [showRaw, setShowRaw] = useState36(false);
@@ -14294,7 +14373,7 @@ var WfoWorkflowStepList = React63.forwardRef(
14294
14373
  };
14295
14374
  });
14296
14375
  };
14297
- useEffect24(() => {
14376
+ useEffect25(() => {
14298
14377
  setStepListItems(
14299
14378
  (previousStepListItems) => persistStepListItemState(previousStepListItems, steps, userInputForm)
14300
14379
  );
@@ -14795,7 +14874,7 @@ var WfoSubscriptionDetailPage = () => {
14795
14874
  };
14796
14875
 
14797
14876
  // src/pages/subscriptions/WfoSubscriptionsListPage.tsx
14798
- import { useEffect as useEffect25, useState as useState39 } from "react";
14877
+ import { useEffect as useEffect26, useState as useState39 } from "react";
14799
14878
  import { useTranslations as useTranslations65 } from "next-intl";
14800
14879
  import { StringParam as StringParam4, useQueryParam as useQueryParam3, withDefault as withDefault4 } from "use-query-params";
14801
14880
  import { EuiSpacer as EuiSpacer24 } from "@elastic/eui";
@@ -14804,7 +14883,7 @@ var WfoSubscriptionsListPage = () => {
14804
14883
  const t = useTranslations65("subscriptions.detail");
14805
14884
  const [tableDefaults, setTableDefaults] = useState39();
14806
14885
  const getStoredTableConfig = useStoredTableConfig(SUBSCRIPTIONS_TABLE_LOCAL_STORAGE_KEY);
14807
- useEffect25(() => {
14886
+ useEffect26(() => {
14808
14887
  const storedConfig = getStoredTableConfig();
14809
14888
  if (storedConfig) {
14810
14889
  setTableDefaults(storedConfig);
@@ -14855,7 +14934,7 @@ var WfoSubscriptionsListPage = () => {
14855
14934
  };
14856
14935
 
14857
14936
  // src/pages/tasks/WfoTasksListPage.tsx
14858
- import { useContext as useContext10, useEffect as useEffect26, useState as useState40 } from "react";
14937
+ import { useContext as useContext10, useEffect as useEffect27, useState as useState40 } from "react";
14859
14938
  import { useTranslations as useTranslations66 } from "next-intl";
14860
14939
  import Link11 from "next/link";
14861
14940
  import { useRouter as useRouter15 } from "next/router";
@@ -14938,7 +15017,7 @@ var WfoTasksListPage = () => {
14938
15017
  const { showConfirmDialog } = useContext10(ConfirmationDialogContext);
14939
15018
  const [retryAllProcesses] = useRetryAllProcessesMutation();
14940
15019
  const { isEngineRunningNow } = useCheckEngineStatus();
14941
- useEffect26(() => {
15020
+ useEffect27(() => {
14942
15021
  const storedConfig = getStoredTableConfig();
14943
15022
  if (storedConfig) {
14944
15023
  setTableDefaults(storedConfig);
@@ -15031,7 +15110,7 @@ var WfoTasksListPage = () => {
15031
15110
  };
15032
15111
 
15033
15112
  // src/pages/workflows/WfoWorkflowsListPage.tsx
15034
- import { useEffect as useEffect27, useState as useState41 } from "react";
15113
+ import { useEffect as useEffect28, useState as useState41 } from "react";
15035
15114
  import { useTranslations as useTranslations67 } from "next-intl";
15036
15115
  import { useRouter as useRouter16 } from "next/router";
15037
15116
  import { StringParam as StringParam6, useQueryParam as useQueryParam5, withDefault as withDefault6 } from "use-query-params";
@@ -15112,7 +15191,7 @@ var WfoWorkflowsListPage = () => {
15112
15191
  const selectedWorkflowsListTab = getWorkflowsListTabTypeFromString(activeTab);
15113
15192
  const localStorageKey = selectedWorkflowsListTab === "ACTIVE" /* ACTIVE */ ? ACTIVE_PROCESSES_LIST_TABLE_LOCAL_STORAGE_KEY : COMPLETED_PROCESSES_LIST_TABLE_LOCAL_STORAGE_KEY;
15114
15193
  const getStoredTableConfig = useStoredTableConfig(localStorageKey);
15115
- useEffect27(() => {
15194
+ useEffect28(() => {
15116
15195
  const storedConfig = getStoredTableConfig();
15117
15196
  if (storedConfig) {
15118
15197
  setTableDefaults(storedConfig);
@@ -15655,9 +15734,9 @@ var WfoInsyncIcon = ({ inSync }) => {
15655
15734
  };
15656
15735
 
15657
15736
  // src/components/WfoErrorBoundary/WfoErrorBoundary.tsx
15658
- import React71 from "react";
15737
+ import React72 from "react";
15659
15738
  import { jsx as jsx228, jsxs as jsxs123 } from "@emotion/react/jsx-runtime";
15660
- var WfoErrorBoundary = class extends React71.Component {
15739
+ var WfoErrorBoundary = class extends React72.Component {
15661
15740
  constructor(props) {
15662
15741
  super(props);
15663
15742
  this.state = { hasError: false };
@@ -15862,6 +15941,11 @@ var WfoSubscriptionsList = ({
15862
15941
  const { data, isFetching, error, endpointName } = useGetSubscriptionListQuery(graphqlQueryVariables);
15863
15942
  const subscriptionList = mapGraphQlSubscriptionsResultToSubscriptionListItems(data);
15864
15943
  const tableColumnConfig = {
15944
+ actions: {
15945
+ columnType: "control" /* CONTROL */,
15946
+ width: "50px",
15947
+ renderControl: (row) => /* @__PURE__ */ jsx231(WfoSubscriptionActions, { compactMode: true, subscriptionId: row.subscriptionId })
15948
+ },
15865
15949
  subscriptionId: {
15866
15950
  columnType: "data" /* DATA */,
15867
15951
  label: t("id"),
@@ -15886,11 +15970,12 @@ var WfoSubscriptionsList = ({
15886
15970
  insync: {
15887
15971
  columnType: "data" /* DATA */,
15888
15972
  label: t("insync"),
15889
- width: "80px",
15973
+ width: "75px",
15890
15974
  renderData: (value) => /* @__PURE__ */ jsx231(WfoInsyncIcon, { inSync: value })
15891
15975
  },
15892
15976
  productName: {
15893
15977
  columnType: "data" /* DATA */,
15978
+ width: "260px",
15894
15979
  label: t("product")
15895
15980
  },
15896
15981
  tag: {
@@ -15910,7 +15995,7 @@ var WfoSubscriptionsList = ({
15910
15995
  startDate: {
15911
15996
  columnType: "data" /* DATA */,
15912
15997
  label: t("startDate"),
15913
- width: "120px",
15998
+ width: "100px",
15914
15999
  renderData: (value) => /* @__PURE__ */ jsx231(WfoDateTime, { dateOrIsoString: value }),
15915
16000
  renderDetails: parseDateToLocaleDateTimeString,
15916
16001
  clipboardText: parseDateToLocaleDateTimeString,
@@ -15919,7 +16004,7 @@ var WfoSubscriptionsList = ({
15919
16004
  endDate: {
15920
16005
  columnType: "data" /* DATA */,
15921
16006
  label: t("endDate"),
15922
- width: "120px",
16007
+ width: "100px",
15923
16008
  renderData: (value) => /* @__PURE__ */ jsx231(WfoDateTime, { dateOrIsoString: value }),
15924
16009
  renderDetails: parseDateToLocaleDateTimeString,
15925
16010
  clipboardText: parseDateToLocaleDateTimeString,
@@ -15942,12 +16027,6 @@ var WfoSubscriptionsList = ({
15942
16027
  );
15943
16028
  }
15944
16029
  },
15945
- actions: {
15946
- columnType: "control" /* CONTROL */,
15947
- label: t("actions"),
15948
- width: "80px",
15949
- renderControl: (row) => /* @__PURE__ */ jsx231(WfoSubscriptionActions, { compactMode: true, subscriptionId: row.subscriptionId })
15950
- },
15951
16030
  metadata: {
15952
16031
  columnType: "data" /* DATA */,
15953
16032
  label: t("metadata"),
@@ -16785,7 +16864,7 @@ var WfoTableCodeBlock = ({ stepState: data }) => {
16785
16864
  };
16786
16865
 
16787
16866
  // src/components/WfoSearchPage/WfoSearch/WfoSearch.tsx
16788
- import { useEffect as useEffect31, useState as useState48 } from "react";
16867
+ import { useEffect as useEffect32, useState as useState48 } from "react";
16789
16868
  import { useTranslations as useTranslations83 } from "next-intl";
16790
16869
  import {
16791
16870
  EuiButton as EuiButton21,
@@ -16802,10 +16881,10 @@ import {
16802
16881
  } from "@elastic/eui";
16803
16882
 
16804
16883
  // src/hooks/useDebounce.ts
16805
- import { useEffect as useEffect28, useState as useState44 } from "react";
16884
+ import { useEffect as useEffect29, useState as useState44 } from "react";
16806
16885
  function useDebounce(value, delay) {
16807
16886
  const [debouncedValue, setDebouncedValue] = useState44(value);
16808
- useEffect28(() => {
16887
+ useEffect29(() => {
16809
16888
  if (delay <= 0) {
16810
16889
  setDebouncedValue(value);
16811
16890
  return;
@@ -16821,7 +16900,7 @@ function useDebounce(value, delay) {
16821
16900
  }
16822
16901
 
16823
16902
  // src/hooks/useSearch.ts
16824
- import { useEffect as useEffect29, useState as useState45 } from "react";
16903
+ import { useEffect as useEffect30, useState as useState45 } from "react";
16825
16904
  var useSearch = (query, entityType, filterGroup, limit, retriever = "auto" /* Auto */) => {
16826
16905
  const [results, setResults] = useState45({
16827
16906
  data: [],
@@ -16829,7 +16908,7 @@ var useSearch = (query, entityType, filterGroup, limit, retriever = "auto" /* Au
16829
16908
  search_metadata: { search_type: null, description: null }
16830
16909
  });
16831
16910
  const [triggerSearch, { isLoading, isError }] = useSearchMutation();
16832
- useEffect29(() => {
16911
+ useEffect30(() => {
16833
16912
  const queryText = typeof query === "string" ? query : query.text?.trim() || "";
16834
16913
  const hasFilters = filterGroup && filterGroup.children.length > 0;
16835
16914
  if (queryText.length < 2 && !hasFilters) {
@@ -16978,7 +17057,7 @@ var useSearchPagination = (debouncedQuery, selectedEntityTab, filterGroup, pageS
16978
17057
  };
16979
17058
 
16980
17059
  // src/hooks/useUrlParams.ts
16981
- import { useCallback as useCallback13, useEffect as useEffect30, useState as useState47 } from "react";
17060
+ import { useCallback as useCallback13, useEffect as useEffect31, useState as useState47 } from "react";
16982
17061
 
16983
17062
  // src/components/WfoSearchPage/constants.ts
16984
17063
  var DEFAULT_PAGE_SIZE2 = 5;
@@ -17039,7 +17118,7 @@ var useUrlParams = () => {
17039
17118
  window.history.replaceState({}, "", newUrl);
17040
17119
  setUrlParams(newParams);
17041
17120
  }, [query, selectedEntityTab, showFilters, selectedRecordIndex, selectedRecordId]);
17042
- useEffect30(() => {
17121
+ useEffect31(() => {
17043
17122
  updateUrl();
17044
17123
  }, [updateUrl]);
17045
17124
  return {
@@ -17091,7 +17170,7 @@ var WfoSearch = () => {
17091
17170
  retrieverType
17092
17171
  );
17093
17172
  const [hasSearchBeenAttempted, setHasSearchBeenAttempted] = useState48(false);
17094
- useEffect31(() => {
17173
+ useEffect32(() => {
17095
17174
  const queryText = typeof debouncedQuery === "string" ? debouncedQuery : debouncedQuery?.text?.trim() || "";
17096
17175
  const hasFilters = filterGroup && filterGroup.children.length > 0;
17097
17176
  if (queryText.length >= 2 || hasFilters) {
@@ -17134,7 +17213,7 @@ var WfoSearch = () => {
17134
17213
  setSearchValue(searchText);
17135
17214
  setQuery(searchText);
17136
17215
  };
17137
- useEffect31(() => {
17216
+ useEffect32(() => {
17138
17217
  if (typeof query === "string") {
17139
17218
  if (query !== searchValue) {
17140
17219
  setSearchValue(query);
@@ -17151,7 +17230,7 @@ var WfoSearch = () => {
17151
17230
  const shouldShowNoResults = (() => {
17152
17231
  return hasSearchBeenAttempted && !loading && results.data.length === 0;
17153
17232
  })();
17154
- useEffect31(() => {
17233
+ useEffect32(() => {
17155
17234
  if (results.data.length > 0) {
17156
17235
  if (selectedRecordId) {
17157
17236
  const foundIndex = results.data.findIndex((result) => result.entity_id === selectedRecordId);
@@ -17169,10 +17248,10 @@ var WfoSearch = () => {
17169
17248
  }
17170
17249
  }
17171
17250
  }, [results.data, selectedRecordId, setSelectedRecordId, setSelectedRecordIndex, urlParams]);
17172
- useEffect31(() => {
17251
+ useEffect32(() => {
17173
17252
  setShowDetailPanel(results?.data?.length > 0 && selectedRecordIndex >= 0 && selectedEntityTab === "SUBSCRIPTION");
17174
17253
  }, [results?.data?.length, selectedRecordIndex, selectedEntityTab]);
17175
- useEffect31(() => {
17254
+ useEffect32(() => {
17176
17255
  resetPagination();
17177
17256
  }, [debouncedQuery, selectedEntityTab, filterGroup, resetPagination]);
17178
17257
  const { RESULTS_GROW, DETAIL_GROW } = LAYOUT_RATIOS;
@@ -17333,7 +17412,7 @@ var WfoSearchLoadingState = () => {
17333
17412
  };
17334
17413
 
17335
17414
  // src/components/WfoSearchPage/WfoSearchResults/WfoSearchResultItem.tsx
17336
- import { useEffect as useEffect32, useRef as useRef11 } from "react";
17415
+ import { useEffect as useEffect33, useRef as useRef11 } from "react";
17337
17416
  import { useTranslations as useTranslations86 } from "next-intl";
17338
17417
  import { EuiButtonIcon as EuiButtonIcon15, EuiFlexGroup as EuiFlexGroup38, EuiFlexItem as EuiFlexItem36, EuiPanel as EuiPanel16, EuiSpacer as EuiSpacer32, EuiText as EuiText35 } from "@elastic/eui";
17339
17418
 
@@ -17418,7 +17497,7 @@ var WfoSearchResultItem = ({
17418
17497
  const baseUrl = `${window.location.protocol}//${window.location.host}`;
17419
17498
  const detailUrl = getDetailUrl(result, baseUrl);
17420
17499
  const itemRef = useRef11(null);
17421
- useEffect32(() => {
17500
+ useEffect33(() => {
17422
17501
  if (isSelected && onPositionChange && itemRef.current) {
17423
17502
  onPositionChange(index, itemRef.current);
17424
17503
  }
@@ -17631,7 +17710,7 @@ import { useTranslations as useTranslations93 } from "next-intl";
17631
17710
  import { EuiButtonIcon as EuiButtonIcon17, EuiFlexGroup as EuiFlexGroup45, EuiFlexItem as EuiFlexItem42, EuiFormRow as EuiFormRow8, EuiPanel as EuiPanel18 } from "@elastic/eui";
17632
17711
 
17633
17712
  // src/hooks/usePathAutoComplete.ts
17634
- import { useEffect as useEffect33, useState as useState49 } from "react";
17713
+ import { useEffect as useEffect34, useState as useState49 } from "react";
17635
17714
  var FALLBACK_DEFINITIONS = {
17636
17715
  string: {
17637
17716
  operators: ["eq", "neq"],
@@ -17679,7 +17758,7 @@ var usePathAutocomplete = (prefix, entityType) => {
17679
17758
  isLoading,
17680
17759
  isError
17681
17760
  } = useSearchPathsQuery({ q: debouncedPrefix, entity_type: entityType }, { skip: debouncedPrefix.length < 1 });
17682
- useEffect33(() => {
17761
+ useEffect34(() => {
17683
17762
  if (debouncedPrefix.length < 1) {
17684
17763
  setPaths([]);
17685
17764
  return;
@@ -18632,10 +18711,142 @@ var FilterGroup = ({
18632
18711
  };
18633
18712
 
18634
18713
  // src/components/WfoAgent/WfoAgent/WfoAgent.tsx
18714
+ import { useCallback as useCallback14, useRef as useRef12 } from "react";
18635
18715
  import { useTranslations as useTranslations99 } from "next-intl";
18636
- import { useCopilotAction, useRenderToolCall } from "@copilotkit/react-core";
18716
+ import { useRenderToolCall } from "@copilotkit/react-core";
18637
18717
  import { CopilotChat } from "@copilotkit/react-ui";
18638
18718
 
18719
+ // src/hooks/useAgentPlanEvents.ts
18720
+ import { useEffect as useEffect35, useState as useState51 } from "react";
18721
+ import { useAgent } from "@copilotkit/react-core/v2";
18722
+ var PLANNER_STEP_NAME = "Planner";
18723
+ var initialState2 = {
18724
+ planning: false,
18725
+ steps: []
18726
+ };
18727
+ var updateSteps = (steps, predicate, updater) => steps.map((step) => predicate(step) ? updater(step) : step);
18728
+ function useAgentPlanEvents(agentId = "query_agent") {
18729
+ const { agent } = useAgent({ agentId });
18730
+ const [executionState, setExecutionState] = useState51(initialState2);
18731
+ useEffect35(() => {
18732
+ if (!agent) {
18733
+ return;
18734
+ }
18735
+ const subscriber = {
18736
+ onCustomEvent: (params) => {
18737
+ const event = params?.event;
18738
+ if (!event) return;
18739
+ if (event.name === "PLAN_CREATED" /* PLAN_CREATED */) {
18740
+ const tasks = event.value;
18741
+ if (!Array.isArray(tasks)) return;
18742
+ setExecutionState({
18743
+ planning: false,
18744
+ steps: tasks.map((task) => ({
18745
+ step_name: task.skillName,
18746
+ reasoning: task.reasoning,
18747
+ status: "pending",
18748
+ tool_calls: []
18749
+ }))
18750
+ });
18751
+ return;
18752
+ }
18753
+ if (event.name === "AGENT_STEP_ACTIVE" /* STEP_ACTIVE */) {
18754
+ const stepName = event.value?.step;
18755
+ if (!stepName) return;
18756
+ if (stepName === PLANNER_STEP_NAME) {
18757
+ setExecutionState((prev) => ({
18758
+ ...prev,
18759
+ planning: true
18760
+ }));
18761
+ return;
18762
+ }
18763
+ const reasoning = event.value?.reasoning ?? null;
18764
+ setExecutionState((prev) => {
18765
+ const steps = updateSteps(
18766
+ prev.steps,
18767
+ (step) => step.status === "active",
18768
+ (step) => ({ ...step, status: "completed" })
18769
+ );
18770
+ const existingIndex = steps.findIndex((step) => step.step_name === stepName);
18771
+ if (existingIndex >= 0) {
18772
+ steps[existingIndex] = {
18773
+ ...steps[existingIndex],
18774
+ status: "active",
18775
+ reasoning: reasoning ?? steps[existingIndex].reasoning
18776
+ };
18777
+ } else {
18778
+ steps.push({
18779
+ step_name: stepName,
18780
+ reasoning,
18781
+ status: "active",
18782
+ tool_calls: []
18783
+ });
18784
+ }
18785
+ return { planning: false, steps };
18786
+ });
18787
+ }
18788
+ },
18789
+ onToolCallStartEvent: ({ event }) => {
18790
+ setExecutionState((prev) => {
18791
+ const currentStep = prev.steps.find((step) => step.status === "active");
18792
+ if (!currentStep) return prev;
18793
+ return {
18794
+ ...prev,
18795
+ steps: updateSteps(
18796
+ prev.steps,
18797
+ (step) => step.step_name === currentStep.step_name,
18798
+ (step) => ({
18799
+ ...step,
18800
+ tool_calls: [
18801
+ ...step.tool_calls,
18802
+ {
18803
+ id: event.toolCallId,
18804
+ name: event.toolCallName,
18805
+ status: "executing"
18806
+ }
18807
+ ]
18808
+ })
18809
+ )
18810
+ };
18811
+ });
18812
+ },
18813
+ onToolCallEndEvent: ({ event }) => {
18814
+ setExecutionState((prev) => ({
18815
+ ...prev,
18816
+ steps: updateSteps(
18817
+ prev.steps,
18818
+ (step) => step.tool_calls.some((toolCall) => toolCall.id === event.toolCallId),
18819
+ (step) => ({
18820
+ ...step,
18821
+ tool_calls: step.tool_calls.map(
18822
+ (toolCall) => toolCall.id === event.toolCallId ? { ...toolCall, status: "complete" } : toolCall
18823
+ )
18824
+ })
18825
+ )
18826
+ }));
18827
+ },
18828
+ onRunStartedEvent: () => {
18829
+ setExecutionState(initialState2);
18830
+ },
18831
+ onRunFinishedEvent: () => {
18832
+ setExecutionState((prev) => ({
18833
+ planning: false,
18834
+ steps: updateSteps(
18835
+ prev.steps,
18836
+ (step) => step.status === "active",
18837
+ (step) => ({ ...step, status: "completed" })
18838
+ )
18839
+ }));
18840
+ }
18841
+ };
18842
+ const subscription = agent.subscribe(subscriber);
18843
+ return () => {
18844
+ subscription.unsubscribe();
18845
+ };
18846
+ }, [agent]);
18847
+ return executionState;
18848
+ }
18849
+
18639
18850
  // src/components/WfoAgent/ExportButton/ExportButton.tsx
18640
18851
  import { useTranslations as useTranslations95 } from "next-intl";
18641
18852
  import { EuiIcon as EuiIcon8, EuiLoadingSpinner as EuiLoadingSpinner3 } from "@elastic/eui";
@@ -18719,7 +18930,7 @@ var getExportButtonStyles = ({ theme }) => {
18719
18930
 
18720
18931
  // src/components/WfoAgent/ExportButton/ExportButton.tsx
18721
18932
  import { jsx as jsx267, jsxs as jsxs142 } from "@emotion/react/jsx-runtime";
18722
- function ExportButton({ exportData }) {
18933
+ function ExportButton({ artifact }) {
18723
18934
  const { showToastMessage } = useShowToastMessage();
18724
18935
  const tError = useTranslations95("errors");
18725
18936
  const [triggerExport, { isFetching }] = useLazyGetAgentExportQuery();
@@ -18734,7 +18945,7 @@ function ExportButton({ exportData }) {
18734
18945
  } = useWithOrchestratorTheme(getExportButtonStyles);
18735
18946
  const filename = getCsvFileNameWithDate("export");
18736
18947
  const onDownloadClick = async () => {
18737
- const data = await triggerExport(exportData.download_url).unwrap();
18948
+ const data = await triggerExport(artifact.download_url).unwrap();
18738
18949
  const keyOrder = data.page.length > 0 ? Object.keys(data.page[0]) : [];
18739
18950
  const handleExport = csvDownloadHandler(
18740
18951
  async () => data,
@@ -18756,7 +18967,7 @@ function ExportButton({ exportData }) {
18756
18967
  await handleExport();
18757
18968
  };
18758
18969
  return /* @__PURE__ */ jsx267("div", { css: containerStyle2, children: /* @__PURE__ */ jsxs142("div", { css: buttonWrapperStyle, children: [
18759
- exportData.message && /* @__PURE__ */ jsx267("div", { css: titleStyle, children: exportData.message }),
18970
+ artifact.description && /* @__PURE__ */ jsx267("div", { css: titleStyle, children: artifact.description }),
18760
18971
  /* @__PURE__ */ jsxs142("div", { css: fileRowStyle, onClick: onDownloadClick, children: [
18761
18972
  /* @__PURE__ */ jsxs142("div", { css: fileInfoStyle, children: [
18762
18973
  /* @__PURE__ */ jsx267(EuiIcon8, { type: "document", size: "m" }),
@@ -18767,310 +18978,137 @@ function ExportButton({ exportData }) {
18767
18978
  ] }) });
18768
18979
  }
18769
18980
 
18770
- // src/components/WfoAgent/ToolProgress/ToolProgress.tsx
18771
- import { useState as useState51 } from "react";
18772
- import { useTranslations as useTranslations97 } from "next-intl";
18773
- import { EuiFlexGroup as EuiFlexGroup49, EuiFlexItem as EuiFlexItem46, EuiLoadingSpinner as EuiLoadingSpinner4 } from "@elastic/eui";
18774
-
18775
- // src/components/WfoAgent/ToolProgress/DiscoverFilterPathsDisplay.tsx
18776
- import React78 from "react";
18777
- import { EuiSpacer as EuiSpacer34, EuiText as EuiText42 } from "@elastic/eui";
18778
- import { Fragment as Fragment66, jsx as jsx268, jsxs as jsxs143 } from "@emotion/react/jsx-runtime";
18779
- var DiscoverFilterPathsDisplay = ({ parameters, result }) => {
18780
- const { field_names = [] } = parameters;
18781
- const foundFields = result ? Object.entries(result).filter(
18782
- ([, fieldResult]) => fieldResult.status !== "NOT_FOUND"
18783
- ) : [];
18784
- const totalPaths = foundFields.reduce((count, [, fieldResult]) => {
18785
- const pathCount = fieldResult.leaves?.reduce((leafCount, leaf) => {
18786
- return leafCount + (leaf.paths?.length || 1);
18787
- }, 0) || 0;
18788
- return count + pathCount;
18789
- }, 0);
18790
- return /* @__PURE__ */ jsxs143("div", { children: [
18791
- field_names.length > 0 && /* @__PURE__ */ jsxs143(Fragment66, { children: [
18792
- /* @__PURE__ */ jsxs143(EuiText42, { size: "xs", color: "subdued", children: [
18793
- "Looking for",
18794
- " ",
18795
- field_names.map((name, idx) => /* @__PURE__ */ jsxs143(React78.Fragment, { children: [
18796
- idx > 0 && ", ",
18797
- /* @__PURE__ */ jsx268(WfoBadge, { color: "hollow", textColor: "default", children: name })
18798
- ] }, name))
18799
- ] }),
18800
- /* @__PURE__ */ jsx268(EuiSpacer34, { size: "s" })
18801
- ] }),
18802
- result && totalPaths > 0 && /* @__PURE__ */ jsxs143("div", { children: [
18803
- /* @__PURE__ */ jsx268(EuiText42, { size: "xs", color: "subdued", children: /* @__PURE__ */ jsxs143("strong", { children: [
18804
- "Found ",
18805
- totalPaths,
18806
- " path",
18807
- totalPaths > 1 ? "s" : "",
18808
- ":"
18809
- ] }) }),
18810
- /* @__PURE__ */ jsx268(EuiSpacer34, { size: "xs" }),
18811
- foundFields.map(([fieldName, fieldResult]) => /* @__PURE__ */ jsx268("div", { style: { marginBottom: "8px" }, children: fieldResult.leaves && fieldResult.leaves.length > 0 && fieldResult.leaves.map((leaf, leafIdx) => {
18812
- const paths = leaf.paths || (leaf.name ? [leaf.name] : []);
18813
- return /* @__PURE__ */ jsx268(React78.Fragment, { children: paths.map((path, pathIdx) => /* @__PURE__ */ jsx268(
18814
- "div",
18815
- {
18816
- style: {
18817
- marginBottom: "4px"
18818
- },
18819
- children: /* @__PURE__ */ jsx268(WfoPathBreadcrumb, { path, size: "s" })
18820
- },
18821
- pathIdx
18822
- )) }, leafIdx);
18823
- }) }, fieldName))
18824
- ] })
18825
- ] });
18826
- };
18827
-
18828
- // src/components/WfoAgent/ToolProgress/RunSearchDisplay.tsx
18829
- import { EuiFlexGroup as EuiFlexGroup47, EuiFlexItem as EuiFlexItem44, EuiText as EuiText43 } from "@elastic/eui";
18830
- import { jsx as jsx269, jsxs as jsxs144 } from "@emotion/react/jsx-runtime";
18831
- var RunSearchDisplay = ({ parameters }) => {
18832
- const { limit = 10 } = parameters;
18833
- return /* @__PURE__ */ jsx269("div", { children: /* @__PURE__ */ jsxs144(EuiFlexGroup47, { gutterSize: "s", alignItems: "center", children: [
18834
- /* @__PURE__ */ jsx269(EuiFlexItem44, { grow: false, children: /* @__PURE__ */ jsx269(EuiText43, { size: "xs", color: "subdued", children: /* @__PURE__ */ jsx269("strong", { children: "Results Limit" }) }) }),
18835
- /* @__PURE__ */ jsx269(EuiFlexItem44, { grow: false, children: /* @__PURE__ */ jsx269(WfoBadge, { textColor: "default", color: "hollow", children: limit }) })
18836
- ] }) });
18837
- };
18838
-
18839
- // src/components/WfoAgent/ToolProgress/SetFilterTreeDisplay.tsx
18981
+ // src/components/WfoAgent/WfoPlanProgress/WfoPlanProgress.tsx
18982
+ import { useState as useState52 } from "react";
18840
18983
  import { useTranslations as useTranslations96 } from "next-intl";
18841
- import { EuiText as EuiText44 } from "@elastic/eui";
18984
+ import { EuiLoadingSpinner as EuiLoadingSpinner4, EuiPanel as EuiPanel20, EuiText as EuiText42 } from "@elastic/eui";
18842
18985
 
18843
- // src/components/WfoAgent/ToolProgress/SetFilterTreeDisplay.styles.ts
18986
+ // src/components/WfoAgent/WfoPlanProgress/styles.ts
18844
18987
  import { css as css45 } from "@emotion/react";
18845
- var getFilterDisplayStyles = ({ theme }) => {
18846
- const wrapStyle = css45({
18847
- display: "flex",
18848
- flexWrap: "wrap",
18849
- gap: theme.size.s
18988
+ var getWfoPlanProgressStyles = ({ theme }) => {
18989
+ const iconSize = 14;
18990
+ const containerStyle2 = css45({
18991
+ maxWidth: "50%",
18992
+ marginRight: "auto",
18993
+ marginBottom: theme.size.s,
18994
+ fontSize: theme.size.m
18850
18995
  });
18851
- const columnGroupWrapStyle = css45({
18996
+ const headerStyle = css45({
18852
18997
  display: "flex",
18853
- flexDirection: "column",
18998
+ alignItems: "center",
18854
18999
  gap: theme.size.s,
18855
- alignItems: "flex-start"
19000
+ paddingBottom: theme.size.s,
19001
+ marginBottom: theme.size.xs,
19002
+ borderBottom: `${theme.border.width.thin} solid ${theme.colors.borderBaseSubdued}`,
19003
+ fontWeight: theme.font.weight.semiBold
18856
19004
  });
18857
- const chipStyle = css45({
18858
- display: "inline-flex",
19005
+ const rowStyle = css45({
19006
+ display: "flex",
18859
19007
  alignItems: "center",
18860
- borderRadius: theme.size.xl,
18861
- border: `1px solid ${theme.border.color}`,
18862
- backgroundColor: theme.colors.backgroundBasePlain,
18863
- padding: `${theme.size.s} ${theme.size.m}`,
18864
- lineHeight: 1.1,
18865
- gap: theme.size.s
18866
- });
18867
- const groupStyle = css45({
18868
- border: `1px solid ${theme.colors.borderBaseSubdued}`,
18869
- borderRadius: theme.border.radius.medium,
18870
- padding: theme.size.s,
18871
- margin: theme.size.xs,
18872
- backgroundColor: theme.colors.backgroundBasePlain
18873
- });
18874
- const operatorStyle = css45({
18875
- fontFamily: theme.font.familyCode,
18876
- padding: `${theme.size.xs}px ${theme.size.s}px`,
18877
- borderRadius: theme.size.s,
18878
- backgroundColor: theme.colors.primary,
18879
- color: theme.colors.textGhost,
18880
- fontSize: theme.size.m,
18881
- fontWeight: theme.font.weight.bold,
18882
- margin: `${theme.size.xs} 0`
19008
+ gap: theme.size.s,
19009
+ padding: `${theme.size.xxs} 0`
18883
19010
  });
18884
- const valueStyle = css45({
18885
- fontWeight: theme.font.weight.semiBold,
18886
- color: theme.colors.warning
19011
+ const reasoningStyle = css45({
19012
+ marginLeft: `calc(${iconSize}px + ${theme.size.s})`
18887
19013
  });
18888
- return {
18889
- wrapStyle,
18890
- columnGroupWrapStyle,
18891
- chipStyle,
18892
- groupStyle,
18893
- operatorStyle,
18894
- valueStyle
18895
- };
18896
- };
18897
-
18898
- // src/components/WfoAgent/ToolProgress/SetFilterTreeDisplay.tsx
18899
- import { jsx as jsx270, jsxs as jsxs145 } from "@emotion/react/jsx-runtime";
18900
- var DEPTH_INDENT = 16;
18901
- var SetFilterTreeDisplay = ({ parameters }) => {
18902
- const t = useTranslations96("agent.page");
18903
- const { wrapStyle, columnGroupWrapStyle, chipStyle, groupStyle, operatorStyle, valueStyle } = useWithOrchestratorTheme(getFilterDisplayStyles);
18904
- const filters = parameters?.filters || parameters;
18905
- const formatFilterValue = (condition) => {
18906
- if ("value" in condition && condition.value !== void 0) {
18907
- if (condition.op === "between" && condition.value && typeof condition.value === "object") {
18908
- const { start, end, from, to } = condition.value;
18909
- const fromVal = start || from;
18910
- const toVal = end || to;
18911
- return `${fromVal} \u2026 ${toVal}`;
18912
- }
18913
- return String(condition.value);
18914
- }
18915
- return "\u2014";
18916
- };
18917
- const renderFilterGroup = (group, depth = 0) => {
18918
- if (!group.children || group.children.length === 0) {
18919
- return /* @__PURE__ */ jsx270(EuiText44, { size: "s", color: "subdued", children: /* @__PURE__ */ jsx270("em", { children: t("emptyGroup") }) });
18920
- }
18921
- const areChildrenGroups = group.children.length > 0 && !isCondition(group.children[0]);
18922
- return /* @__PURE__ */ jsxs145("div", { css: groupStyle, style: { marginLeft: depth * DEPTH_INDENT }, children: [
18923
- /* @__PURE__ */ jsx270("div", { css: operatorStyle, children: group.op }),
18924
- /* @__PURE__ */ jsx270("div", { css: areChildrenGroups ? columnGroupWrapStyle : wrapStyle, children: group.children.map((child, i) => /* @__PURE__ */ jsx270("div", { children: isCondition(child) ? /* @__PURE__ */ jsxs145("div", { css: chipStyle, children: [
18925
- /* @__PURE__ */ jsx270(WfoPathBreadcrumb, { path: child.path, size: "s", showArrows: true }),
18926
- /* @__PURE__ */ jsx270(WfoBadge, { textColor: "default", color: "hollow", children: getOperatorDisplay(
18927
- child.condition.op,
18928
- child.value_kind ? {
18929
- path: child.path,
18930
- type: child.value_kind,
18931
- operators: [],
18932
- value_schema: {},
18933
- group: "leaf"
18934
- } : void 0
18935
- ).symbol }),
18936
- /* @__PURE__ */ jsx270("span", { css: valueStyle, children: formatFilterValue(child.condition) })
18937
- ] }) : renderFilterGroup(child, depth + 1) }, i)) })
18938
- ] });
18939
- };
18940
- if (!filters || !filters.children || filters.children.length === 0) {
18941
- return /* @__PURE__ */ jsx270(EuiText44, { size: "s", color: "subdued", children: /* @__PURE__ */ jsx270("em", { children: t("noFiltersApplied") }) });
18942
- }
18943
- return /* @__PURE__ */ jsx270("div", { children: renderFilterGroup(filters) });
18944
- };
18945
-
18946
- // src/components/WfoAgent/ToolProgress/StartNewSearchDisplay.tsx
18947
- import { EuiFlexGroup as EuiFlexGroup48, EuiFlexItem as EuiFlexItem45, EuiSpacer as EuiSpacer35, EuiText as EuiText45 } from "@elastic/eui";
18948
- import { Fragment as Fragment67, jsx as jsx271, jsxs as jsxs146 } from "@emotion/react/jsx-runtime";
18949
- var StartNewSearchDisplay = ({ parameters }) => {
18950
- const { entity_type, action, query } = parameters;
18951
- return /* @__PURE__ */ jsxs146("div", { children: [
18952
- /* @__PURE__ */ jsxs146(EuiFlexGroup48, { gutterSize: "s", wrap: true, children: [
18953
- entity_type && /* @__PURE__ */ jsxs146(EuiFlexItem45, { grow: false, children: [
18954
- /* @__PURE__ */ jsx271(EuiText45, { size: "xs", color: "subdued", children: /* @__PURE__ */ jsx271("strong", { children: "Entity Type" }) }),
18955
- /* @__PURE__ */ jsx271(EuiSpacer35, { size: "xs" }),
18956
- /* @__PURE__ */ jsx271(WfoBadge, { textColor: "default", color: "hollow", children: entity_type })
18957
- ] }),
18958
- action && /* @__PURE__ */ jsxs146(EuiFlexItem45, { grow: false, children: [
18959
- /* @__PURE__ */ jsx271(EuiText45, { size: "xs", color: "subdued", children: /* @__PURE__ */ jsx271("strong", { children: "Action" }) }),
18960
- /* @__PURE__ */ jsx271(EuiSpacer35, { size: "xs" }),
18961
- /* @__PURE__ */ jsx271(WfoBadge, { textColor: "default", color: "hollow", children: action })
18962
- ] })
18963
- ] }),
18964
- query && /* @__PURE__ */ jsxs146(Fragment67, { children: [
18965
- /* @__PURE__ */ jsx271(EuiSpacer35, { size: "s" }),
18966
- /* @__PURE__ */ jsx271(EuiText45, { size: "xs", color: "subdued", children: /* @__PURE__ */ jsx271("strong", { children: "Query" }) }),
18967
- /* @__PURE__ */ jsx271(EuiSpacer35, { size: "xs" }),
18968
- /* @__PURE__ */ jsx271(EuiText45, { size: "s", children: /* @__PURE__ */ jsxs146("em", { children: [
18969
- '"',
18970
- query,
18971
- '"'
18972
- ] }) })
18973
- ] })
18974
- ] });
18975
- };
18976
-
18977
- // src/components/WfoAgent/ToolProgress/styles.ts
18978
- import { css as css46 } from "@emotion/react";
18979
- var getToolProgressStyles = ({ theme }) => {
18980
- const containerStyle2 = css46({
18981
- border: `${theme.border.width.thin} solid ${theme.colors.borderBaseSubdued}`,
18982
- borderRadius: theme.border.radius.medium,
18983
- backgroundColor: theme.colors.backgroundBaseNeutral,
18984
- transition: `all ${theme.animation.normal} ease`,
18985
- maxWidth: "50%",
18986
- marginRight: "auto"
18987
- });
18988
- const containerClickableStyle = css46({
19014
+ const toolCallsToggleStyle = css45({
19015
+ display: "inline-flex",
19016
+ alignItems: "center",
19017
+ gap: theme.size.xxs,
18989
19018
  cursor: "pointer",
19019
+ fontSize: theme.size.s,
19020
+ color: theme.colors.textSubdued,
19021
+ marginLeft: "auto",
18990
19022
  "&:hover": {
18991
- borderColor: theme.colors.primary,
18992
- backgroundColor: theme.colors.backgroundBasePlain
19023
+ color: theme.colors.textParagraph
18993
19024
  }
18994
19025
  });
18995
- const headerStyle = css46({
18996
- padding: `${theme.size.base} ${theme.size.l}`
18997
- });
18998
- const nameStyle = css46({
18999
- fontSize: theme.size.m,
19000
- fontWeight: theme.font.weight.medium
19001
- });
19002
- const expandedContentStyle = css46({
19003
- borderTop: `${theme.border.width.thin} solid ${theme.colors.borderBaseSubdued}`,
19004
- padding: `${theme.size.base} ${theme.size.l}`
19005
- });
19006
- const iconSize = 18;
19007
- const iconStyle = css46({
19008
- color: theme.colors.textSubdued
19026
+ const toolCallsListStyle = css45({
19027
+ paddingLeft: `calc(${iconSize}px + ${theme.size.s})`
19009
19028
  });
19010
19029
  return {
19011
19030
  containerStyle: containerStyle2,
19012
- containerClickableStyle,
19013
19031
  headerStyle,
19014
- nameStyle,
19015
- expandedContentStyle,
19016
- iconSize,
19017
- iconStyle
19032
+ rowStyle,
19033
+ reasoningStyle,
19034
+ toolCallsToggleStyle,
19035
+ toolCallsListStyle,
19036
+ iconSize
19018
19037
  };
19019
19038
  };
19020
19039
 
19021
- // src/components/WfoAgent/ToolProgress/ToolProgress.tsx
19022
- import { jsx as jsx272, jsxs as jsxs147 } from "@emotion/react/jsx-runtime";
19023
- var TOOL_DISPLAY_COMPONENTS = {
19024
- set_filter_tree: SetFilterTreeDisplay,
19025
- start_new_search: StartNewSearchDisplay,
19026
- run_search: RunSearchDisplay,
19027
- discover_filter_paths: DiscoverFilterPathsDisplay
19028
- };
19029
- var ToolProgress = ({ name, status, args, result }) => {
19030
- const [isExpanded, setIsExpanded] = useState51(false);
19031
- const tPage = useTranslations97("agent.page");
19032
- const { containerStyle: containerStyle2, containerClickableStyle, headerStyle, nameStyle, expandedContentStyle, iconSize, iconStyle } = useWithOrchestratorTheme(getToolProgressStyles);
19040
+ // src/components/WfoAgent/WfoPlanProgress/WfoPlanProgress.tsx
19041
+ import { jsx as jsx268, jsxs as jsxs143 } from "@emotion/react/jsx-runtime";
19042
+ var WfoPlanProgress = ({ executionState }) => {
19043
+ const [expandedSteps, setExpandedSteps] = useState52(/* @__PURE__ */ new Set());
19044
+ const t = useTranslations96("agent.page.planProgress");
19033
19045
  const { theme } = useOrchestratorTheme();
19034
- const getToolLabel = (toolName) => {
19035
- const toolKey = `tools.${toolName}`;
19036
- const translated = tPage(toolKey);
19037
- const fullKey = `agent.page.${toolKey}`;
19038
- return translated === fullKey ? toolName : translated;
19039
- };
19040
- const renderStatus = () => {
19041
- if (status === "complete") {
19042
- return /* @__PURE__ */ jsx272(WfoCheckmarkCircleFill, { color: theme.colors.success, width: iconSize, height: iconSize });
19043
- }
19044
- if (status === "inProgress" || status === "executing") {
19045
- return /* @__PURE__ */ jsx272(EuiLoadingSpinner4, { size: "s" });
19046
- }
19047
- if (status === "failed") {
19048
- return /* @__PURE__ */ jsx272(WfoXCircleFill, { color: theme.colors.danger, width: iconSize, height: iconSize });
19049
- }
19046
+ const { containerStyle: containerStyle2, headerStyle, rowStyle, reasoningStyle, toolCallsToggleStyle, toolCallsListStyle, iconSize } = useWithOrchestratorTheme(getWfoPlanProgressStyles);
19047
+ if (!executionState.planning && executionState.steps.length === 0) {
19050
19048
  return null;
19049
+ }
19050
+ const toggleStep = (stepName) => {
19051
+ setExpandedSteps((prev) => {
19052
+ const next = new Set(prev);
19053
+ if (next.has(stepName)) {
19054
+ next.delete(stepName);
19055
+ } else {
19056
+ next.add(stepName);
19057
+ }
19058
+ return next;
19059
+ });
19051
19060
  };
19052
- const DisplayComponent = TOOL_DISPLAY_COMPONENTS[name];
19053
- const hasContent = DisplayComponent && (args || result);
19054
- return /* @__PURE__ */ jsxs147("div", { css: containerStyle2, children: [
19055
- /* @__PURE__ */ jsx272("div", { css: hasContent && containerClickableStyle, onClick: () => hasContent && setIsExpanded(!isExpanded), children: /* @__PURE__ */ jsxs147(EuiFlexGroup49, { gutterSize: "m", alignItems: "center", css: headerStyle, children: [
19056
- /* @__PURE__ */ jsx272(EuiFlexItem46, { grow: false, children: /* @__PURE__ */ jsx272("div", { css: iconStyle, children: /* @__PURE__ */ jsx272(WfoWrench, { width: iconSize, height: iconSize }) }) }),
19057
- /* @__PURE__ */ jsx272(EuiFlexItem46, { grow: true, children: /* @__PURE__ */ jsx272("span", { css: nameStyle, children: getToolLabel(name) }) }),
19058
- /* @__PURE__ */ jsx272(EuiFlexItem46, { grow: false, style: { minWidth: `${iconSize}px` }, children: renderStatus() }),
19059
- /* @__PURE__ */ jsx272(EuiFlexItem46, { grow: false, style: { minWidth: `${iconSize}px` }, children: hasContent && (isExpanded ? /* @__PURE__ */ jsx272(WfoChevronUp, { width: iconSize, height: iconSize }) : /* @__PURE__ */ jsx272(WfoChevronDown, { width: iconSize, height: iconSize })) })
19060
- ] }) }),
19061
- hasContent && isExpanded && /* @__PURE__ */ jsx272("div", { css: expandedContentStyle, children: /* @__PURE__ */ jsx272(DisplayComponent, { parameters: args, result }) })
19061
+ const completedCount = executionState.steps.filter((s) => s.status === "completed").length;
19062
+ const totalCount = executionState.steps.length;
19063
+ const allDone = totalCount > 0 && completedCount === totalCount;
19064
+ const headerLabel = executionState.planning ? t("planning") : allDone ? t("completed") : t("executing", { completed: completedCount, total: totalCount });
19065
+ const StatusIcon = ({ status }) => {
19066
+ if (status === "completed")
19067
+ return /* @__PURE__ */ jsx268(WfoCheckmarkCircleFill, { color: theme.colors.success, width: iconSize, height: iconSize });
19068
+ if (status === "pending")
19069
+ return /* @__PURE__ */ jsx268(WfoMinusCircleOutline, { color: theme.colors.textSubdued, width: iconSize, height: iconSize });
19070
+ return /* @__PURE__ */ jsx268(EuiLoadingSpinner4, { size: "s" });
19071
+ };
19072
+ return /* @__PURE__ */ jsxs143(EuiPanel20, { hasBorder: true, paddingSize: "s", css: containerStyle2, children: [
19073
+ /* @__PURE__ */ jsxs143("div", { css: headerStyle, children: [
19074
+ allDone ? /* @__PURE__ */ jsx268(WfoCheckmarkCircleFill, { color: theme.colors.success, width: iconSize, height: iconSize }) : /* @__PURE__ */ jsx268(EuiLoadingSpinner4, { size: "s" }),
19075
+ /* @__PURE__ */ jsx268("span", { children: headerLabel })
19076
+ ] }),
19077
+ executionState.steps.map((step) => {
19078
+ const isExpanded = expandedSteps.has(step.step_name);
19079
+ const hasToolCalls = step.tool_calls.length > 0;
19080
+ return /* @__PURE__ */ jsxs143("div", { children: [
19081
+ /* @__PURE__ */ jsxs143("div", { css: rowStyle, children: [
19082
+ /* @__PURE__ */ jsx268(StatusIcon, { status: step.status }),
19083
+ /* @__PURE__ */ jsx268(EuiText42, { size: "s", color: step.status === "pending" ? "subdued" : void 0, children: step.step_name }),
19084
+ hasToolCalls && /* @__PURE__ */ jsxs143("span", { css: toolCallsToggleStyle, onClick: () => toggleStep(step.step_name), children: [
19085
+ step.tool_calls.length,
19086
+ isExpanded ? /* @__PURE__ */ jsx268(WfoChevronUp, { width: iconSize, height: iconSize }) : /* @__PURE__ */ jsx268(WfoChevronDown, { width: iconSize, height: iconSize })
19087
+ ] })
19088
+ ] }),
19089
+ step.reasoning && /* @__PURE__ */ jsx268(EuiText42, { size: "xs", color: "subdued", css: reasoningStyle, children: step.reasoning }),
19090
+ isExpanded && hasToolCalls && /* @__PURE__ */ jsx268("div", { css: toolCallsListStyle, children: step.tool_calls.map((tc) => /* @__PURE__ */ jsxs143(EuiText42, { size: "xs", css: rowStyle, children: [
19091
+ /* @__PURE__ */ jsx268(StatusIcon, { status: tc.status === "complete" ? "completed" : "active" }),
19092
+ /* @__PURE__ */ jsx268("span", { children: tc.name })
19093
+ ] }, tc.id)) })
19094
+ ] }, step.step_name);
19095
+ })
19062
19096
  ] });
19063
19097
  };
19064
19098
 
19065
- // src/components/WfoAgent/WfoAgentVisualization/WfoAgentVisualization.tsx
19099
+ // src/components/WfoAgent/WfoQueryArtifact/WfoQueryArtifact.tsx
19066
19100
  import { useTranslations as useTranslations98 } from "next-intl";
19067
- import { EuiText as EuiText46 } from "@elastic/eui";
19101
+ import { EuiText as EuiText44 } from "@elastic/eui";
19102
+
19103
+ // src/components/WfoAgent/WfoAgentVisualization/WfoAgentVisualization.tsx
19104
+ import { useTranslations as useTranslations97 } from "next-intl";
19105
+ import { EuiText as EuiText43 } from "@elastic/eui";
19068
19106
 
19069
19107
  // src/components/WfoAgent/WfoAgentChart/WfoAgentLineChart.tsx
19070
19108
  import { Axis, Chart, DARK_THEME, LIGHT_THEME, LineSeries, Position, Settings } from "@elastic/charts";
19071
19109
  import "@elastic/charts/dist/theme_only_dark.css";
19072
19110
  import "@elastic/charts/dist/theme_only_light.css";
19073
- import { jsx as jsx273, jsxs as jsxs148 } from "@emotion/react/jsx-runtime";
19111
+ import { jsx as jsx269, jsxs as jsxs144 } from "@emotion/react/jsx-runtime";
19074
19112
  function WfoAgentLineChart({ aggregationData }) {
19075
19113
  const { results } = aggregationData;
19076
19114
  const { isDarkModeActive, multiplyByBaseUnit } = useOrchestratorTheme();
@@ -19084,9 +19122,9 @@ function WfoAgentLineChart({ aggregationData }) {
19084
19122
  xLabel: result.group_values[xKey],
19085
19123
  ...result.aggregations
19086
19124
  }));
19087
- return /* @__PURE__ */ jsxs148(Chart, { size: { height: multiplyByBaseUnit(30) }, children: [
19088
- /* @__PURE__ */ jsx273(Settings, { showLegend: true, baseTheme: chartBaseTheme }),
19089
- /* @__PURE__ */ jsx273(
19125
+ return /* @__PURE__ */ jsxs144(Chart, { size: { height: multiplyByBaseUnit(30) }, children: [
19126
+ /* @__PURE__ */ jsx269(Settings, { showLegend: true, baseTheme: chartBaseTheme }),
19127
+ /* @__PURE__ */ jsx269(
19090
19128
  Axis,
19091
19129
  {
19092
19130
  id: "bottom",
@@ -19095,8 +19133,8 @@ function WfoAgentLineChart({ aggregationData }) {
19095
19133
  tickFormat: (d) => chartData[d]?.xLabel?.split(" ")[0] || d
19096
19134
  }
19097
19135
  ),
19098
- /* @__PURE__ */ jsx273(Axis, { id: "left", position: Position.Left, title: "Count" }),
19099
- aggKeys.map((aggKey) => /* @__PURE__ */ jsx273(
19136
+ /* @__PURE__ */ jsx269(Axis, { id: "left", position: Position.Left, title: "Count" }),
19137
+ aggKeys.map((aggKey) => /* @__PURE__ */ jsx269(
19100
19138
  LineSeries,
19101
19139
  {
19102
19140
  id: aggKey,
@@ -19116,14 +19154,14 @@ import "@elastic/charts/dist/theme_only_dark.css";
19116
19154
  import "@elastic/charts/dist/theme_only_light.css";
19117
19155
 
19118
19156
  // src/components/WfoAgent/WfoAgentChart/styles.ts
19119
- import { css as css47 } from "@emotion/react";
19120
- var containerStyle = css47({
19157
+ import { css as css46 } from "@emotion/react";
19158
+ var containerStyle = css46({
19121
19159
  maxWidth: "50%",
19122
19160
  marginRight: "auto"
19123
19161
  });
19124
19162
 
19125
19163
  // src/components/WfoAgent/WfoAgentChart/WfoAgentPieChart.tsx
19126
- import { jsx as jsx274, jsxs as jsxs149 } from "@emotion/react/jsx-runtime";
19164
+ import { jsx as jsx270, jsxs as jsxs145 } from "@emotion/react/jsx-runtime";
19127
19165
  function WfoAgentPieChart({ aggregationData }) {
19128
19166
  const { results } = aggregationData;
19129
19167
  const { isDarkModeActive, multiplyByBaseUnit } = useOrchestratorTheme();
@@ -19137,9 +19175,9 @@ function WfoAgentPieChart({ aggregationData }) {
19137
19175
  label: result.group_values[groupKey],
19138
19176
  value: result.aggregations[aggKey]
19139
19177
  }));
19140
- return /* @__PURE__ */ jsx274("div", { css: containerStyle, children: /* @__PURE__ */ jsxs149(Chart2, { size: { height: multiplyByBaseUnit(25) }, children: [
19141
- /* @__PURE__ */ jsx274(Settings2, { showLegend: true, legendPosition: Position2.Right, baseTheme: chartBaseTheme }),
19142
- /* @__PURE__ */ jsx274(
19178
+ return /* @__PURE__ */ jsx270("div", { css: containerStyle, children: /* @__PURE__ */ jsxs145(Chart2, { size: { height: multiplyByBaseUnit(25) }, children: [
19179
+ /* @__PURE__ */ jsx270(Settings2, { showLegend: true, legendPosition: Position2.Right, baseTheme: chartBaseTheme }),
19180
+ /* @__PURE__ */ jsx270(
19143
19181
  Partition,
19144
19182
  {
19145
19183
  id: "pieByPR",
@@ -19163,7 +19201,7 @@ function WfoAgentPieChart({ aggregationData }) {
19163
19201
  // src/components/WfoAgent/WfoAgentTable/WfoAgentTable.tsx
19164
19202
  import React80 from "react";
19165
19203
  import { EuiBasicTable } from "@elastic/eui";
19166
- import { jsx as jsx275 } from "@emotion/react/jsx-runtime";
19204
+ import { jsx as jsx271 } from "@emotion/react/jsx-runtime";
19167
19205
  var formatColumnName = (key) => key.replace(/_/g, " ").replace(/\b\w/g, (l) => l.toUpperCase());
19168
19206
  function WfoAgentTable({ aggregationData }) {
19169
19207
  const { results } = aggregationData;
@@ -19200,7 +19238,7 @@ function WfoAgentTable({ aggregationData }) {
19200
19238
  setPageSize(page.size);
19201
19239
  }
19202
19240
  };
19203
- return /* @__PURE__ */ jsx275(
19241
+ return /* @__PURE__ */ jsx271(
19204
19242
  EuiBasicTable,
19205
19243
  {
19206
19244
  items: paginatedItems,
@@ -19213,12 +19251,12 @@ function WfoAgentTable({ aggregationData }) {
19213
19251
  }
19214
19252
 
19215
19253
  // src/components/WfoAgent/WfoAgentVisualization/WfoAgentVisualization.tsx
19216
- import { jsx as jsx276 } from "@emotion/react/jsx-runtime";
19254
+ import { jsx as jsx272 } from "@emotion/react/jsx-runtime";
19217
19255
  function WfoAgentVisualization({ aggregationData }) {
19218
19256
  const { visualization_type, results } = aggregationData;
19219
- const t = useTranslations98("agent.page.visualization");
19257
+ const t = useTranslations97("agent.page.visualization");
19220
19258
  if (!results || results.length === 0) {
19221
- return /* @__PURE__ */ jsx276(EuiText46, { size: "s", children: /* @__PURE__ */ jsx276("p", { children: t("noDataAvailable") }) });
19259
+ return /* @__PURE__ */ jsx272(EuiText43, { size: "s", children: /* @__PURE__ */ jsx272("p", { children: t("noDataAvailable") }) });
19222
19260
  }
19223
19261
  const visualizationType = visualization_type?.type;
19224
19262
  if (visualizationType === "pie" /* PIE */ || visualizationType === "line" /* LINE */) {
@@ -19226,70 +19264,122 @@ function WfoAgentVisualization({ aggregationData }) {
19226
19264
  const groupKeys = Object.keys(firstResult.group_values);
19227
19265
  const aggKeys = Object.keys(firstResult.aggregations);
19228
19266
  if (groupKeys.length === 0 || aggKeys.length === 0) {
19229
- return /* @__PURE__ */ jsx276(EuiText46, { size: "s", children: /* @__PURE__ */ jsx276("p", { children: t("invalidDataStructure") }) });
19267
+ return /* @__PURE__ */ jsx272(EuiText43, { size: "s", children: /* @__PURE__ */ jsx272("p", { children: t("invalidDataStructure") }) });
19230
19268
  }
19231
19269
  }
19232
19270
  switch (visualizationType) {
19233
19271
  case "pie" /* PIE */:
19234
- return /* @__PURE__ */ jsx276(WfoAgentPieChart, { aggregationData });
19272
+ return /* @__PURE__ */ jsx272(WfoAgentPieChart, { aggregationData });
19235
19273
  case "line" /* LINE */:
19236
- return /* @__PURE__ */ jsx276(WfoAgentLineChart, { aggregationData });
19274
+ return /* @__PURE__ */ jsx272(WfoAgentLineChart, { aggregationData });
19237
19275
  case "table" /* TABLE */:
19238
19276
  default:
19239
- return /* @__PURE__ */ jsx276(WfoAgentTable, { aggregationData });
19277
+ return /* @__PURE__ */ jsx272(WfoAgentTable, { aggregationData });
19278
+ }
19279
+ }
19280
+
19281
+ // src/components/WfoAgent/WfoQueryArtifact/WfoQueryArtifact.tsx
19282
+ import { jsx as jsx273 } from "@emotion/react/jsx-runtime";
19283
+ function WfoQueryArtifact({ artifact }) {
19284
+ const t = useTranslations98("agent.page.visualization");
19285
+ const { data, isLoading, isError } = useGetAgentQueryResultsQuery(artifact.query_id);
19286
+ if (isLoading) {
19287
+ return /* @__PURE__ */ jsx273(WfoLoading, {});
19288
+ }
19289
+ if (isError || !data) {
19290
+ return /* @__PURE__ */ jsx273(EuiText44, { size: "s", color: "danger", children: /* @__PURE__ */ jsx273("p", { children: t("noDataAvailable") }) });
19240
19291
  }
19292
+ const aggregationData = {
19293
+ ...data,
19294
+ visualization_type: artifact.visualization_type
19295
+ };
19296
+ return /* @__PURE__ */ jsx273(WfoAgentVisualization, { aggregationData });
19241
19297
  }
19242
19298
 
19243
19299
  // src/components/WfoAgent/WfoAgent/WfoAgent.tsx
19244
- import { jsx as jsx277, jsxs as jsxs150 } from "@emotion/react/jsx-runtime";
19300
+ import { Fragment as Fragment66, jsx as jsx274, jsxs as jsxs146 } from "@emotion/react/jsx-runtime";
19245
19301
  function WfoAgent() {
19246
19302
  const tPage = useTranslations99("agent.page");
19247
19303
  const { NAVIGATION_HEIGHT } = useWithOrchestratorTheme(getPageTemplateStyles);
19248
19304
  const agentAvailability = useAgentAvailability();
19249
- useRenderToolCall({
19250
- name: "run_search",
19251
- render: ({ result }) => {
19252
- if (!result) {
19253
- return /* @__PURE__ */ jsx277("div", {});
19305
+ const planProgress = useAgentPlanEvents();
19306
+ const planProgressRef = useRef12(planProgress);
19307
+ planProgressRef.current = planProgress;
19308
+ const RenderMessage = useCallback14(
19309
+ ({
19310
+ message,
19311
+ messages,
19312
+ inProgress,
19313
+ index,
19314
+ isCurrentMessage,
19315
+ AssistantMessage,
19316
+ UserMessage,
19317
+ ImageRenderer,
19318
+ onRegenerate,
19319
+ ...rest
19320
+ }) => {
19321
+ if (message.role === "user") {
19322
+ return UserMessage ? /* @__PURE__ */ jsx274(UserMessage, { rawData: message, message, ImageRenderer }, index) : null;
19254
19323
  }
19255
- return /* @__PURE__ */ jsx277(WfoAgentVisualization, { aggregationData: result });
19256
- }
19257
- });
19258
- useRenderToolCall({
19259
- name: "run_aggregation",
19260
- render: ({ result }) => {
19261
- if (!result) {
19262
- return /* @__PURE__ */ jsx277("div", {});
19324
+ if (message.role === "assistant") {
19325
+ const progress = planProgressRef.current;
19326
+ const lastUserIndex = [...messages].reverse().findIndex((msg) => msg.role === "user");
19327
+ const firstAssistantAfterUser = lastUserIndex >= 0 ? messages.length - lastUserIndex : -1;
19328
+ const showPlanProgress = index === firstAssistantAfterUser && (progress.planning || progress.steps.length > 0);
19329
+ return /* @__PURE__ */ jsxs146(Fragment66, { children: [
19330
+ showPlanProgress && /* @__PURE__ */ jsx274(WfoPlanProgress, { executionState: progress }),
19331
+ AssistantMessage && /* @__PURE__ */ jsx274(
19332
+ AssistantMessage,
19333
+ {
19334
+ subComponent: message.generativeUI?.(),
19335
+ rawData: message,
19336
+ message,
19337
+ messages,
19338
+ isLoading: inProgress && isCurrentMessage && !message.content,
19339
+ isGenerating: inProgress && isCurrentMessage && !!message.content,
19340
+ isCurrentMessage,
19341
+ onRegenerate: () => onRegenerate?.(message.id),
19342
+ feedback: rest.messageFeedback?.[message.id] || null,
19343
+ ImageRenderer,
19344
+ ...rest
19345
+ },
19346
+ index
19347
+ )
19348
+ ] });
19263
19349
  }
19264
- return /* @__PURE__ */ jsx277(WfoAgentVisualization, { aggregationData: result });
19350
+ return null;
19351
+ },
19352
+ []
19353
+ );
19354
+ const renderQueryResult = ({ result }) => {
19355
+ if (!result) {
19356
+ return /* @__PURE__ */ jsx274(Fragment66, {});
19265
19357
  }
19266
- });
19358
+ return /* @__PURE__ */ jsx274(WfoQueryArtifact, { artifact: result });
19359
+ };
19360
+ useRenderToolCall({ name: "run_search", render: renderQueryResult });
19361
+ useRenderToolCall({ name: "run_aggregation", render: renderQueryResult });
19267
19362
  useRenderToolCall({
19268
19363
  name: "prepare_export",
19269
19364
  render: ({ result }) => {
19270
19365
  if (!result) {
19271
- return /* @__PURE__ */ jsx277("div", {});
19366
+ return /* @__PURE__ */ jsx274(Fragment66, {});
19272
19367
  }
19273
- return /* @__PURE__ */ jsx277(ExportButton, { exportData: result });
19274
- }
19275
- });
19276
- useCopilotAction({
19277
- name: "*",
19278
- render: ({ name, status, args, result }) => {
19279
- return /* @__PURE__ */ jsx277(ToolProgress, { name, status, args, result });
19368
+ return /* @__PURE__ */ jsx274(ExportButton, { artifact: result });
19280
19369
  }
19281
19370
  });
19282
- return /* @__PURE__ */ jsx277(WfoAvailabilityCheck, { featureType: "agent", availability: agentAvailability, children: /* @__PURE__ */ jsxs150("div", { style: { height: `calc(90vh - ${NAVIGATION_HEIGHT}px)` }, children: [
19283
- /* @__PURE__ */ jsx277("style", { children: `
19371
+ return /* @__PURE__ */ jsx274(WfoAvailabilityCheck, { featureType: "agent", availability: agentAvailability, children: /* @__PURE__ */ jsxs146("div", { style: { height: `calc(90vh - ${NAVIGATION_HEIGHT}px)` }, children: [
19372
+ /* @__PURE__ */ jsx274("style", { children: `
19284
19373
  .copilotKitChat {
19285
19374
  height: 100%;
19286
19375
  display: flex;
19287
19376
  flex-direction: column;
19288
19377
  }
19289
19378
  ` }),
19290
- /* @__PURE__ */ jsx277(
19379
+ /* @__PURE__ */ jsx274(
19291
19380
  CopilotChat,
19292
19381
  {
19382
+ RenderMessage,
19293
19383
  labels: {
19294
19384
  title: tPage("copilot.title"),
19295
19385
  initial: tPage("copilot.initial")
@@ -19318,14 +19408,14 @@ function WfoAgent() {
19318
19408
  }
19319
19409
 
19320
19410
  // src/components/WfoMonacoCodeBlock/WfoMonacoCodeBlock.tsx
19321
- import { useCallback as useCallback14, useEffect as useEffect34, useState as useState52 } from "react";
19322
- import { EuiFlexItem as EuiFlexItem47 } from "@elastic/eui";
19411
+ import { useCallback as useCallback15, useEffect as useEffect36, useState as useState53 } from "react";
19412
+ import { EuiFlexItem as EuiFlexItem44 } from "@elastic/eui";
19323
19413
  import Editor from "@monaco-editor/react";
19324
19414
 
19325
19415
  // src/components/WfoMonacoCodeBlock/styles.ts
19326
- import { css as css48 } from "@emotion/react";
19416
+ import { css as css47 } from "@emotion/react";
19327
19417
  var getStyles15 = ({ theme, isDarkModeActive }) => {
19328
- const monacoEditorStyle = css48({
19418
+ const monacoEditorStyle = css47({
19329
19419
  marginTop: 10,
19330
19420
  padding: 10,
19331
19421
  backgroundColor: isDarkModeActive ? theme.colors.backgroundBaseNeutral : theme.colors.backgroundBaseSubdued,
@@ -19337,7 +19427,7 @@ var getStyles15 = ({ theme, isDarkModeActive }) => {
19337
19427
  };
19338
19428
 
19339
19429
  // src/components/WfoMonacoCodeBlock/WfoMonacoCodeBlock.tsx
19340
- import { jsx as jsx278 } from "@emotion/react/jsx-runtime";
19430
+ import { jsx as jsx275 } from "@emotion/react/jsx-runtime";
19341
19431
  var MONACO_THEME = {
19342
19432
  light: "vs",
19343
19433
  dark: "hc-black"
@@ -19345,10 +19435,10 @@ var MONACO_THEME = {
19345
19435
  var WfoMonacoCodeBlock = ({ data }) => {
19346
19436
  const { theme, isDarkModeActive } = useOrchestratorTheme();
19347
19437
  const { monacoEditorStyle } = useWithOrchestratorTheme(getStyles15);
19348
- const [monacoInstance, setMonacoInstance] = useState52(void 0);
19438
+ const [monacoInstance, setMonacoInstance] = useState53(void 0);
19349
19439
  const json = JSON.stringify(data, null, 4);
19350
- const [editorHeight, setEditorHeight] = useState52(0);
19351
- const addThemeToEditor = useCallback14(
19440
+ const [editorHeight, setEditorHeight] = useState53(0);
19441
+ const addThemeToEditor = useCallback15(
19352
19442
  (monaco) => {
19353
19443
  monaco.editor.defineTheme("wfoTheme", {
19354
19444
  base: isDarkModeActive ? MONACO_THEME.dark : MONACO_THEME.light,
@@ -19362,7 +19452,7 @@ var WfoMonacoCodeBlock = ({ data }) => {
19362
19452
  },
19363
19453
  [theme, isDarkModeActive]
19364
19454
  );
19365
- useEffect34(() => {
19455
+ useEffect36(() => {
19366
19456
  if (monacoInstance) {
19367
19457
  addThemeToEditor(monacoInstance);
19368
19458
  }
@@ -19372,7 +19462,7 @@ var WfoMonacoCodeBlock = ({ data }) => {
19372
19462
  setEditorHeight(Math.min(scrollHeight, 500));
19373
19463
  setMonacoInstance(monaco);
19374
19464
  }
19375
- return /* @__PURE__ */ jsx278(EuiFlexItem47, { css: monacoEditorStyle, children: /* @__PURE__ */ jsx278(
19465
+ return /* @__PURE__ */ jsx275(EuiFlexItem44, { css: monacoEditorStyle, children: /* @__PURE__ */ jsx275(
19376
19466
  Editor,
19377
19467
  {
19378
19468
  height: editorHeight,
@@ -19396,10 +19486,10 @@ var WfoMonacoCodeBlock = ({ data }) => {
19396
19486
  };
19397
19487
 
19398
19488
  // src/components/WfoLogoSpinner/styles.ts
19399
- import { css as css49 } from "@emotion/react";
19489
+ import { css as css48 } from "@emotion/react";
19400
19490
  var getWfoLogoSpinnerStyles = () => {
19401
19491
  const isDark = typeof window !== "undefined" && localStorage?.getItem("colorMode") === "DARK";
19402
- const spinCenteringCss = css49({
19492
+ const spinCenteringCss = css48({
19403
19493
  width: "100vw",
19404
19494
  height: "100vh",
19405
19495
  display: "flex",
@@ -19407,7 +19497,7 @@ var getWfoLogoSpinnerStyles = () => {
19407
19497
  justifyContent: "center",
19408
19498
  backgroundColor: isDark ? "#101827" : "#FFFFFF"
19409
19499
  });
19410
- const spinContainerCss = css49({
19500
+ const spinContainerCss = css48({
19411
19501
  display: "flex",
19412
19502
  alignItems: "center",
19413
19503
  width: "80px",
@@ -19417,7 +19507,7 @@ var getWfoLogoSpinnerStyles = () => {
19417
19507
  backgroundColor: "#04385F",
19418
19508
  borderRadius: "8px"
19419
19509
  });
19420
- const spinPathCss = css49({
19510
+ const spinPathCss = css48({
19421
19511
  transformBox: "fill-box",
19422
19512
  transformOrigin: "center",
19423
19513
  animation: "spin 3s linear infinite",
@@ -19434,11 +19524,11 @@ var getWfoLogoSpinnerStyles = () => {
19434
19524
  };
19435
19525
 
19436
19526
  // src/components/WfoLogoSpinner/WfoLogoSpinner.tsx
19437
- import { jsx as jsx279, jsxs as jsxs151 } from "@emotion/react/jsx-runtime";
19527
+ import { jsx as jsx276, jsxs as jsxs147 } from "@emotion/react/jsx-runtime";
19438
19528
  var WfoLogoSpinner = () => {
19439
19529
  const { spinContainerCss, spinCenteringCss, spinPathCss } = getWfoLogoSpinnerStyles();
19440
- return /* @__PURE__ */ jsx279("div", { css: spinCenteringCss, children: /* @__PURE__ */ jsx279("div", { css: spinContainerCss, children: /* @__PURE__ */ jsxs151("svg", { width: "64", height: "64", viewBox: "0 0 640 640", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
19441
- /* @__PURE__ */ jsx279(
19530
+ return /* @__PURE__ */ jsx276("div", { css: spinCenteringCss, children: /* @__PURE__ */ jsx276("div", { css: spinContainerCss, children: /* @__PURE__ */ jsxs147("svg", { width: "64", height: "64", viewBox: "0 0 640 640", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
19531
+ /* @__PURE__ */ jsx276(
19442
19532
  "path",
19443
19533
  {
19444
19534
  css: spinPathCss,
@@ -19448,7 +19538,7 @@ var WfoLogoSpinner = () => {
19448
19538
  fill: "#76B5E0"
19449
19539
  }
19450
19540
  ),
19451
- /* @__PURE__ */ jsx279(
19541
+ /* @__PURE__ */ jsx276(
19452
19542
  "path",
19453
19543
  {
19454
19544
  fillRule: "evenodd",
@@ -19461,10 +19551,10 @@ var WfoLogoSpinner = () => {
19461
19551
  };
19462
19552
 
19463
19553
  // src/components/WfoPopover/WfoPopover.tsx
19464
- import { EuiContextMenuPanel, EuiLoadingSpinner as EuiLoadingSpinner5, EuiPanel as EuiPanel20, EuiPopover as EuiPopover9 } from "@elastic/eui";
19465
- import { jsx as jsx280 } from "@emotion/react/jsx-runtime";
19554
+ import { EuiContextMenuPanel, EuiLoadingSpinner as EuiLoadingSpinner5, EuiPanel as EuiPanel21, EuiPopover as EuiPopover9 } from "@elastic/eui";
19555
+ import { jsx as jsx277 } from "@emotion/react/jsx-runtime";
19466
19556
  var WfoPopover = ({ id, isLoading, PopoverContent, button, isPopoverOpen, closePopover }) => {
19467
- return /* @__PURE__ */ jsx280(
19557
+ return /* @__PURE__ */ jsx277(
19468
19558
  EuiPopover9,
19469
19559
  {
19470
19560
  id,
@@ -19473,7 +19563,7 @@ var WfoPopover = ({ id, isLoading, PopoverContent, button, isPopoverOpen, closeP
19473
19563
  closePopover,
19474
19564
  panelPaddingSize: "none",
19475
19565
  anchorPosition: "downLeft",
19476
- children: /* @__PURE__ */ jsx280(EuiContextMenuPanel, { children: /* @__PURE__ */ jsx280(EuiPanel20, { color: "transparent", paddingSize: "s", children: isLoading ? /* @__PURE__ */ jsx280(EuiLoadingSpinner5, {}) : /* @__PURE__ */ jsx280(PopoverContent, {}) }) })
19566
+ children: /* @__PURE__ */ jsx277(EuiContextMenuPanel, { children: /* @__PURE__ */ jsx277(EuiPanel21, { color: "transparent", paddingSize: "s", children: isLoading ? /* @__PURE__ */ jsx277(EuiLoadingSpinner5, {}) : /* @__PURE__ */ jsx277(PopoverContent, {}) }) })
19477
19567
  }
19478
19568
  );
19479
19569
  };
@@ -19481,7 +19571,7 @@ var WfoPopover = ({ id, isLoading, PopoverContent, button, isPopoverOpen, closeP
19481
19571
  // src/components/WfoButtonWithConfirm/WfoButtonWithConfirm.tsx
19482
19572
  import { useContext as useContext11 } from "react";
19483
19573
  import { EuiButtonIcon as EuiButtonIcon19 } from "@elastic/eui";
19484
- import { jsx as jsx281 } from "@emotion/react/jsx-runtime";
19574
+ import { jsx as jsx278 } from "@emotion/react/jsx-runtime";
19485
19575
  var WfoButtonWithConfirm = ({
19486
19576
  question,
19487
19577
  onConfirm,
@@ -19489,7 +19579,7 @@ var WfoButtonWithConfirm = ({
19489
19579
  ariaLabel = "Confirmation button"
19490
19580
  }) => {
19491
19581
  const { showConfirmDialog } = useContext11(ConfirmationDialogContext);
19492
- return /* @__PURE__ */ jsx281(
19582
+ return /* @__PURE__ */ jsx278(
19493
19583
  EuiButtonIcon19,
19494
19584
  {
19495
19585
  iconType,
@@ -20085,6 +20175,11 @@ var en_GB_default = {
20085
20175
  get_valid_operators: "I'm getting valid operators",
20086
20176
  set_temporal_grouping: "I'm setting temporal grouping"
20087
20177
  },
20178
+ planProgress: {
20179
+ planning: "Planning...",
20180
+ completed: "Plan completed",
20181
+ executing: "Executing plan ({completed}/{total})"
20182
+ },
20088
20183
  visualization: {
20089
20184
  noDataAvailable: "No data available for visualization.",
20090
20185
  invalidDataStructure: "Invalid data structure."
@@ -20794,6 +20889,7 @@ export {
20794
20889
  RenderDirection,
20795
20890
  RetrieverType,
20796
20891
  Row,
20892
+ SEARCH_QUERY_RESULTS_ENDPOINT,
20797
20893
  SETTINGS_CACHE_ENDPOINT,
20798
20894
  SETTINGS_CACHE_NAMES_ENDPOINT,
20799
20895
  SETTINGS_ENDPOINT,
@@ -20932,6 +21028,7 @@ export {
20932
21028
  WfoPencil,
20933
21029
  WfoPencilAlt,
20934
21030
  WfoPencilCompact,
21031
+ WfoPlanProgress,
20935
21032
  WfoPlannedWork,
20936
21033
  WfoPlayCircle,
20937
21034
  WfoPlayFill,
@@ -20955,6 +21052,7 @@ export {
20955
21052
  WfoProductsPage,
20956
21053
  WfoProductsSummaryCard,
20957
21054
  WfoPydanticForm,
21055
+ WfoQueryArtifact,
20958
21056
  WfoQueryParams,
20959
21057
  WfoRadio,
20960
21058
  WfoRadioDropdown,
@@ -21237,6 +21335,7 @@ export {
21237
21335
  useDataDisplayParams,
21238
21336
  useDeleteProcessMutation,
21239
21337
  useDeleteScheduledTaskMutation,
21338
+ useGetAgentQueryResultsQuery,
21240
21339
  useGetCacheNamesQuery,
21241
21340
  useGetCustomerQuery,
21242
21341
  useGetCustomersQuery,