@odigos/ui-kit 0.0.46 → 0.0.48

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 (32) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/lib/components/key-value-input-list/index.d.ts +2 -0
  3. package/lib/components/key-value-input-list/key-value-input-list.stories.d.ts +2 -0
  4. package/lib/components.js +8 -8
  5. package/lib/constants.js +1 -1
  6. package/lib/containers/instrumentation-rule-form/custom-fields/custom-instrumentation.d.ts +5 -0
  7. package/lib/containers.js +69 -17
  8. package/lib/functions.js +5 -5
  9. package/lib/hooks/useInstrumentationRuleFormData.d.ts +2 -2
  10. package/lib/hooks.js +3 -3
  11. package/lib/icons/instrumentation-rules/custom-instrumentation-icon/custom-instrumentation-icon.stories.d.ts +7 -0
  12. package/lib/icons/instrumentation-rules/custom-instrumentation-icon/index.d.ts +2 -0
  13. package/lib/icons/instrumentation-rules/index.d.ts +1 -0
  14. package/lib/icons.js +6 -6
  15. package/lib/{index-C4aVlsHh.js → index-BIYXaOIt.js} +1 -1
  16. package/lib/{index-fEP_guwb.js → index-BWIOWlkS.js} +4 -4
  17. package/lib/{index-BRGQ84pJ.js → index-Bw7RE2T2.js} +21 -4
  18. package/lib/{index-BUCure0Q.js → index-CkTdd3MS.js} +1 -1
  19. package/lib/{index-BJpPcCBm.js → index-CrXEzEGw.js} +2 -2
  20. package/lib/{index-C8vqcUbP.js → index-DHHUJe_a.js} +2 -2
  21. package/lib/{index-B1IScVBT.js → index-DXBePB-r.js} +8 -8
  22. package/lib/{index-CpT8LSxY.js → index-D_SG1Qp0.js} +3 -3
  23. package/lib/{index-CeHgnkLY.js → index-DxR7e2Cq.js} +1 -1
  24. package/lib/{index-DypjdLnz.js → index-ZTzxu5fz.js} +1 -1
  25. package/lib/snippets.js +7 -7
  26. package/lib/store.js +1 -1
  27. package/lib/theme.js +1 -1
  28. package/lib/types/instrumentation-rules/index.d.ts +12 -0
  29. package/lib/types.js +8 -2
  30. package/lib/{useSourceSelectionFormData-CMXqoHZs.js → useSourceSelectionFormData-BP-O55O3.js} +2 -2
  31. package/lib/{useTransition-DsrDiKOV.js → useTransition-DanOnTji.js} +15 -3
  32. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.0.48](https://github.com/odigos-io/ui-kit/compare/ui-kit-v0.0.47...ui-kit-v0.0.48) (2025-06-26)
4
+
5
+
6
+ ### Features
7
+
8
+ * add new instrumentation rule - `CustomInstrumentation` ([#197](https://github.com/odigos-io/ui-kit/issues/197)) ([88e1615](https://github.com/odigos-io/ui-kit/commit/88e161528dff2bfc452398e8cbca373d153e0c08))
9
+
10
+ ## [0.0.47](https://github.com/odigos-io/ui-kit/compare/ui-kit-v0.0.46...ui-kit-v0.0.47) (2025-06-26)
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * **destination-drawer:** conditionally render conditions based on length ([#198](https://github.com/odigos-io/ui-kit/issues/198)) ([a72a292](https://github.com/odigos-io/ui-kit/commit/a72a2921c5cfdeece31136c38e3e4c8d0034e4d4))
16
+
3
17
  ## [0.0.46](https://github.com/odigos-io/ui-kit/compare/ui-kit-v0.0.45...ui-kit-v0.0.46) (2025-06-24)
4
18
 
5
19
 
@@ -11,6 +11,8 @@ interface KeyValueInputsListProps {
11
11
  tooltip?: string;
12
12
  required?: boolean;
13
13
  errorMessage?: string;
14
+ keyPlaceholder?: string;
15
+ valuePlaceholder?: string;
14
16
  }
15
17
  declare const KeyValueInputsList: FC<KeyValueInputsListProps>;
16
18
  export { KeyValueInputsList, type KeyValueInputsListProps };
@@ -7,3 +7,5 @@ declare const _default: {
7
7
  };
8
8
  export default _default;
9
9
  export declare const Default: StoryFn<KeyValueInputsListProps>;
10
+ export declare const CustomPlaceholders: StoryFn<KeyValueInputsListProps>;
11
+ export declare const CustomInstrumentationExample: StoryFn<KeyValueInputsListProps>;
package/lib/components.js CHANGED
@@ -1,15 +1,15 @@
1
- import { B as Button } from './index-B1IScVBT.js';
2
- export { a as AutocompleteInput, b as Badge, a1 as CenterThis, C as Checkbox, c as Code, d as ConditionDetails, D as DataCard, f as DataCardFieldTypes, e as DataCardFields, g as DataTab, h as Divider, i as DocsButton, j as Drawer, l as DrawerFooter, k as DrawerHeader, m as Dropdown, E as ExtendArrow, F as FadeLoader, n as FieldError, o as FieldLabel, a0 as FlexColumn, $ as FlexRow, H as Header, I as IconButton, p as IconGroup, q as IconTitleBadge, r as IconWrapped, s as IconsNav, t as ImageControlled, u as Input, v as InputList, w as InputTable, x as InteractiveTable, K as KeyValueInputsList, M as Modal, a4 as ModalBody, y as MonitorsCheckboxes, z as MonitorsIcons, N as NavigationButtons, G as NoDataFound, J as NotificationNote, a3 as Overlay, S as ScrollX, L as SectionTitle, O as Segment, P as SelectionButton, Q as SkeletonLoader, R as Status, U as Stepper, a5 as TableContainer, a6 as TableTitleWrap, a7 as TableWrap, V as Text, W as TextArea, X as Toggle, T as ToggleCodeComponent, Y as Tooltip, Z as TraceLoader, a2 as VerticalScroll, _ as WarningModal } from './index-B1IScVBT.js';
3
- export { C as CancelWarning, D as DeleteWarning } from './index-C8vqcUbP.js';
1
+ import { B as Button } from './index-DXBePB-r.js';
2
+ export { a as AutocompleteInput, b as Badge, a1 as CenterThis, C as Checkbox, c as Code, d as ConditionDetails, D as DataCard, f as DataCardFieldTypes, e as DataCardFields, g as DataTab, h as Divider, i as DocsButton, j as Drawer, l as DrawerFooter, k as DrawerHeader, m as Dropdown, E as ExtendArrow, F as FadeLoader, n as FieldError, o as FieldLabel, a0 as FlexColumn, $ as FlexRow, H as Header, I as IconButton, p as IconGroup, q as IconTitleBadge, r as IconWrapped, s as IconsNav, t as ImageControlled, u as Input, v as InputList, w as InputTable, x as InteractiveTable, K as KeyValueInputsList, M as Modal, a4 as ModalBody, y as MonitorsCheckboxes, z as MonitorsIcons, N as NavigationButtons, G as NoDataFound, J as NotificationNote, a3 as Overlay, S as ScrollX, L as SectionTitle, O as Segment, P as SelectionButton, Q as SkeletonLoader, R as Status, U as Stepper, a5 as TableContainer, a6 as TableTitleWrap, a7 as TableWrap, V as Text, W as TextArea, X as Toggle, T as ToggleCodeComponent, Y as Tooltip, Z as TraceLoader, a2 as VerticalScroll, _ as WarningModal } from './index-DXBePB-r.js';
3
+ export { C as CancelWarning, D as DeleteWarning } from './index-DHHUJe_a.js';
4
4
  import React, { Component, createElement, createContext } from 'react';
5
- import { T as Theme } from './index-BRGQ84pJ.js';
5
+ import { T as Theme } from './index-Bw7RE2T2.js';
6
6
  import './types.js';
7
- import './index-BUCure0Q.js';
8
- import './index-BJpPcCBm.js';
7
+ import './index-CkTdd3MS.js';
8
+ import './index-CrXEzEGw.js';
9
9
  import 'styled-components';
10
- import './index-CeHgnkLY.js';
10
+ import './index-DxR7e2Cq.js';
11
11
  import './index-BV85P9UP.js';
12
- import './useTransition-DsrDiKOV.js';
12
+ import './useTransition-DanOnTji.js';
13
13
  import 'react-dom';
14
14
 
15
15
  const ErrorBoundaryContext = createContext(null);
package/lib/constants.js CHANGED
@@ -1,4 +1,4 @@
1
- export { A as ACTION_OPTIONS, B as BUTTON_TEXTS, k as DEFAULT_DATA_STREAM_NAME, D as DISPLAY_LANGUAGES, l as DISPLAY_TITLES, F as FORM_ALERTS, I as INSTRUMENTATION_RULE_OPTIONS, L as LANGUAGE_OPTIONS, M as MONITORS_OPTIONS, S as STORAGE_KEYS } from './index-BRGQ84pJ.js';
1
+ export { A as ACTION_OPTIONS, B as BUTTON_TEXTS, k as DEFAULT_DATA_STREAM_NAME, D as DISPLAY_LANGUAGES, l as DISPLAY_TITLES, F as FORM_ALERTS, I as INSTRUMENTATION_RULE_OPTIONS, L as LANGUAGE_OPTIONS, M as MONITORS_OPTIONS, S as STORAGE_KEYS } from './index-Bw7RE2T2.js';
2
2
  export { D as DESTINATION_CATEGORIES } from './index-Dqief9td.js';
3
3
  import 'react';
4
4
  import './types.js';
@@ -0,0 +1,5 @@
1
+ import { type FC } from 'react';
2
+ import { type CustomFieldProps, type InstrumentationRuleFormData } from '@/types';
3
+ type CustomInstrumentationProps = CustomFieldProps<InstrumentationRuleFormData>;
4
+ declare const CustomInstrumentation: FC<CustomInstrumentationProps>;
5
+ export { CustomInstrumentation, type CustomInstrumentationProps };
package/lib/containers.js CHANGED
@@ -1,22 +1,22 @@
1
1
  import React, { useState, useEffect, forwardRef, useRef, useImperativeHandle, useMemo, memo, useContext, createContext, useCallback, useLayoutEffect, Fragment } from 'react';
2
2
  import styled, { css } from 'styled-components';
3
- import { l as DISPLAY_TITLES, T as Theme, h as usePendingStore, g as useNotificationStore, b as useDrawerStore, B as BUTTON_TEXTS, c as useEntityStore, A as ACTION_OPTIONS, m as getActionIcon, f as useModalStore, F as FORM_ALERTS, d as useFilterStore, M as MONITORS_OPTIONS, $ as styleInject, i as useSelectedStore, e as useInstrumentStore, o as getInstrumentationRuleIcon, a as useDataStreamStore, n as getEntityId, S as STORAGE_KEYS, k as DEFAULT_DATA_STREAM_NAME, j as useSetupStore, I as INSTRUMENTATION_RULE_OPTIONS, u as useDarkMode } from './index-BRGQ84pJ.js';
4
- import { ActionType, ActionKeyTypes, InputTypes, FieldTypes, EntityTypes, StatusType, Crud, OtherStatus, NodeTypes, AddNodeTypes, EdgeTypes, SignalType, HeadersCollectionKeyTypes, CodeAttributesKeyTypes, PayloadCollectionKeyTypes, InstrumentationRuleType, K8sResourceKind } from './types.js';
5
- import { f as DataCardFieldTypes, o as FieldLabel, C as Checkbox, n as FieldError, u as Input, w as InputTable, K as KeyValueInputsList, v as InputList, V as Text, O as Segment, L as SectionTitle, i as DocsButton, y as MonitorsCheckboxes, W as TextArea, j as Drawer, d as ConditionDetails, D as DataCard, a0 as FlexColumn, M as Modal, N as NavigationButtons, a4 as ModalBody, J as NotificationNote, a as AutocompleteInput, h as Divider, R as Status, $ as FlexRow, Y as Tooltip, r as IconWrapped, z as MonitorsIcons, a5 as TableContainer, a6 as TableTitleWrap, q as IconTitleBadge, a7 as TableWrap, x as InteractiveTable, a1 as CenterThis, G as NoDataFound, Z as TraceLoader, b as Badge, E as ExtendArrow, a2 as VerticalScroll, P as SelectionButton, B as Button, m as Dropdown, a8 as getDefaultExportFromCjs, F as FadeLoader, g as DataTab, Q as SkeletonLoader, X as Toggle, I as IconButton, A as AddButton$1, U as Stepper, e as DataCardFields, s as IconsNav, p as IconGroup } from './index-B1IScVBT.js';
3
+ import { l as DISPLAY_TITLES, T as Theme, h as usePendingStore, g as useNotificationStore, b as useDrawerStore, B as BUTTON_TEXTS, c as useEntityStore, A as ACTION_OPTIONS, m as getActionIcon, f as useModalStore, F as FORM_ALERTS, d as useFilterStore, M as MONITORS_OPTIONS, a0 as styleInject, i as useSelectedStore, e as useInstrumentStore, o as getInstrumentationRuleIcon, a as useDataStreamStore, n as getEntityId, S as STORAGE_KEYS, k as DEFAULT_DATA_STREAM_NAME, j as useSetupStore, I as INSTRUMENTATION_RULE_OPTIONS, u as useDarkMode } from './index-Bw7RE2T2.js';
4
+ import { ActionType, ActionKeyTypes, InputTypes, FieldTypes, EntityTypes, StatusType, Crud, OtherStatus, NodeTypes, AddNodeTypes, EdgeTypes, SignalType, HeadersCollectionKeyTypes, CustomInstrumentationsKeyTypes, CodeAttributesKeyTypes, PayloadCollectionKeyTypes, InstrumentationRuleType, K8sResourceKind } from './types.js';
5
+ import { f as DataCardFieldTypes, o as FieldLabel, C as Checkbox, n as FieldError, u as Input, w as InputTable, K as KeyValueInputsList, v as InputList, V as Text, O as Segment, L as SectionTitle, i as DocsButton, y as MonitorsCheckboxes, W as TextArea, j as Drawer, d as ConditionDetails, D as DataCard, a0 as FlexColumn, M as Modal, N as NavigationButtons, a4 as ModalBody, J as NotificationNote, a as AutocompleteInput, h as Divider, R as Status, $ as FlexRow, Y as Tooltip, r as IconWrapped, z as MonitorsIcons, a5 as TableContainer, a6 as TableTitleWrap, q as IconTitleBadge, a7 as TableWrap, x as InteractiveTable, a1 as CenterThis, G as NoDataFound, Z as TraceLoader, b as Badge, E as ExtendArrow, a2 as VerticalScroll, P as SelectionButton, B as Button, m as Dropdown, a8 as getDefaultExportFromCjs, F as FadeLoader, g as DataTab, Q as SkeletonLoader, X as Toggle, I as IconButton, A as AddButton$1, U as Stepper, e as DataCardFields, s as IconsNav, p as IconGroup } from './index-DXBePB-r.js';
6
6
  import { i as isEmpty, s as safeJsonParse } from './index-BV85P9UP.js';
7
- import { C as CheckCircledIcon, O as OdigosLogo } from './index-CeHgnkLY.js';
8
- import { C as CrossCircledIcon, O as OdigosLogoText, a as OverviewIcon, F as FilterIcon, D as DataStreamsIcon, R as RetryIcon, N as NotificationIcon, S as SlackLogo, K as KeyIcon, T as TerminalIcon } from './index-C4aVlsHh.js';
9
- import { u as useActionFormData, a as useClickNode, e as useSessionStorage, c as useDataStreamFormData, d as useDestinationFormData, b as useClickNotification, f as useSourceFormData, g as useSourceSelectionFormData } from './useSourceSelectionFormData-CMXqoHZs.js';
10
- import { d as useKeyDown, e as useOnClickOutside, u as useContainerSize, c as useInstrumentationRuleFormData, g as useTransition, f as useTimeAgo, a as useCopy } from './useTransition-DsrDiKOV.js';
11
- import { E as EditIcon, T as TrashIcon, S as SearchIcon, P as PlusIcon$1, h as CheckIcon, A as ArrowIcon, a as CopyIcon, i as CrossIcon } from './index-BUCure0Q.js';
12
- import { D as DeleteWarning, C as CancelWarning } from './index-C8vqcUbP.js';
13
- import { g as getConditionsBooleans, m as mapConditions, b as getStatusIcon, c as capitalizeFirstLetter } from './index-BJpPcCBm.js';
14
- import { f as filterActions, m as getEntityLabel, l as getEntityIcon, v as sleep$1, o as getPlatformIcon, p as getPlatformLabel, h as formatBytes, j as getContainersIcons, q as getValueForRange, k as getDestinationIcon, g as filterSourcesByStream, e as filterSources, b as filterDestinationsByStream, a as filterDestinations, u as mapDestinationFieldsForDisplay, c as compareCondition, s as getYamlFieldsForDestination, d as deepClone, n as getMetricForEntity, r as getWorkloadId, i as getContainersInstrumentedCount, t as isOverTime } from './index-CpT8LSxY.js';
7
+ import { C as CheckCircledIcon, O as OdigosLogo } from './index-DxR7e2Cq.js';
8
+ import { C as CrossCircledIcon, O as OdigosLogoText, a as OverviewIcon, F as FilterIcon, D as DataStreamsIcon, R as RetryIcon, N as NotificationIcon, S as SlackLogo, K as KeyIcon, T as TerminalIcon } from './index-BIYXaOIt.js';
9
+ import { u as useActionFormData, a as useClickNode, e as useSessionStorage, c as useDataStreamFormData, d as useDestinationFormData, b as useClickNotification, f as useSourceFormData, g as useSourceSelectionFormData } from './useSourceSelectionFormData-BP-O55O3.js';
10
+ import { d as useKeyDown, e as useOnClickOutside, u as useContainerSize, c as useInstrumentationRuleFormData, g as useTransition, f as useTimeAgo, a as useCopy } from './useTransition-DanOnTji.js';
11
+ import { E as EditIcon, T as TrashIcon, S as SearchIcon, P as PlusIcon$1, h as CheckIcon, A as ArrowIcon, a as CopyIcon, i as CrossIcon } from './index-CkTdd3MS.js';
12
+ import { D as DeleteWarning, C as CancelWarning } from './index-DHHUJe_a.js';
13
+ import { g as getConditionsBooleans, m as mapConditions, b as getStatusIcon, c as capitalizeFirstLetter } from './index-CrXEzEGw.js';
14
+ import { f as filterActions, m as getEntityLabel, l as getEntityIcon, v as sleep$1, o as getPlatformIcon, p as getPlatformLabel, h as formatBytes, j as getContainersIcons, q as getValueForRange, k as getDestinationIcon, g as filterSourcesByStream, e as filterSources, b as filterDestinationsByStream, a as filterDestinations, u as mapDestinationFieldsForDisplay, c as compareCondition, s as getYamlFieldsForDestination, d as deepClone, n as getMetricForEntity, r as getWorkloadId, i as getContainersInstrumentedCount, t as isOverTime } from './index-D_SG1Qp0.js';
15
15
  import { createPortal } from 'react-dom';
16
16
  import { m as mapExportedSignals } from './index-BlZKWuxe.js';
17
- import { N as NoteBackToSummary, E as EditButton } from './index-fEP_guwb.js';
17
+ import { N as NoteBackToSummary, E as EditButton } from './index-BWIOWlkS.js';
18
18
  import { D as DESTINATION_CATEGORIES } from './index-Dqief9td.js';
19
- import { a6 as RulesIcon, a7 as SourcesIcon, a3 as ActionsIcon, a4 as DestinationsIcon } from './index-DypjdLnz.js';
19
+ import { a6 as RulesIcon, a7 as SourcesIcon, a3 as ActionsIcon, a4 as DestinationsIcon } from './index-ZTzxu5fz.js';
20
20
 
21
21
  const buildCard$3 = (action) => {
22
22
  const { type, spec: { actionName, notes, signals, disabled, collectContainerAttributes, collectReplicaSetAttributes, collectWorkloadId, collectClusterId, labelsAttributes, annotationsAttributes, clusterAttributes, attributeNamesToDelete, renames, piiCategories, fallbackSamplingRatio, samplingPercentage, endpointsFilters, servicesNameFilters, attributeFilters, }, } = action;
@@ -14851,7 +14851,7 @@ const DestinationDrawer = ({ categories, updateDestination, deleteDestination, t
14851
14851
  setIsFormDirty(true);
14852
14852
  setDynamicFields(...params);
14853
14853
  }, validateForm: validateForm, testConnection: testConnection }))) : (React.createElement(DataContainer$2, null,
14854
- React.createElement(ConditionDetails, { conditions: thisItem.conditions || [] }),
14854
+ thisItem.conditions?.length ? React.createElement(ConditionDetails, { conditions: thisItem.conditions }) : null,
14855
14855
  React.createElement(DataCard, { title: DISPLAY_TITLES.DESTINATION_DETAILS, data: !!thisItem ? buildCard$2(thisItem, yamlFields) : [] })))));
14856
14856
  };
14857
14857
 
@@ -15269,7 +15269,7 @@ const DestinationTable = ({ metrics, maxHeight, maxWidth }) => {
15269
15269
  },
15270
15270
  {
15271
15271
  columnKey: 'conditions',
15272
- component: () => React.createElement(TableCellConditions, { conditions: dest.conditions || [], id: dest.id }),
15272
+ component: () => (dest.conditions?.length ? React.createElement(TableCellConditions, { conditions: dest.conditions, id: dest.id }) : null),
15273
15273
  },
15274
15274
  {
15275
15275
  columnKey: 'signals',
@@ -15300,7 +15300,7 @@ const DestinationTable = ({ metrics, maxHeight, maxWidth }) => {
15300
15300
  };
15301
15301
 
15302
15302
  const buildCard$1 = (rule) => {
15303
- const { type, ruleName, notes, disabled, profileName, payloadCollection, codeAttributes, headersCollection } = rule;
15303
+ const { type, ruleName, notes, disabled, profileName, payloadCollection, codeAttributes, headersCollection, customInstrumentations } = rule;
15304
15304
  const arr = [
15305
15305
  { title: DISPLAY_TITLES.TYPE, value: type },
15306
15306
  { type: DataCardFieldTypes.ActiveStatus, title: DISPLAY_TITLES.STATUS, value: String(!disabled) },
@@ -15330,6 +15330,15 @@ const buildCard$1 = (rule) => {
15330
15330
  if (str)
15331
15331
  arr.push({ title: 'Collect', value: str });
15332
15332
  }
15333
+ if (customInstrumentations) {
15334
+ const probes = customInstrumentations[CustomInstrumentationsKeyTypes.Probes] || [];
15335
+ const str = probes
15336
+ .filter(probe => probe.className && probe.methodName)
15337
+ .map(probe => `${probe.className}.${probe.methodName}`)
15338
+ .join(', ');
15339
+ if (str)
15340
+ arr.push({ title: 'Instrumented Methods', value: str });
15341
+ }
15333
15342
  return arr;
15334
15343
  };
15335
15344
 
@@ -15423,6 +15432,38 @@ const CodeAttributes = ({ value, setValue, formErrors }) => {
15423
15432
  !!errorMessage && React.createElement(FieldError, null, errorMessage))));
15424
15433
  };
15425
15434
 
15435
+ const INITIAL_PROBE = {
15436
+ className: '',
15437
+ methodName: '',
15438
+ };
15439
+ const CustomInstrumentation = ({ value, setValue, formErrors }) => {
15440
+ const errorMessage = formErrors['customInstrumentations'];
15441
+ const mappedValue = useMemo(() => {
15442
+ const probes = value?.['customInstrumentations']?.[CustomInstrumentationsKeyTypes.Probes] || [];
15443
+ return probes.map(probe => ({
15444
+ key: probe.className,
15445
+ value: probe.methodName,
15446
+ }));
15447
+ }, [value]);
15448
+ const handleChange = (keyValuePairs) => {
15449
+ const probes = keyValuePairs.map(pair => ({
15450
+ className: pair.key,
15451
+ methodName: pair.value,
15452
+ }));
15453
+ const payload = {
15454
+ [CustomInstrumentationsKeyTypes.Probes]: probes,
15455
+ };
15456
+ setValue('customInstrumentations', payload);
15457
+ };
15458
+ useEffect(() => {
15459
+ if (!mappedValue.length) {
15460
+ handleChange([{ key: INITIAL_PROBE.className, value: INITIAL_PROBE.methodName }]);
15461
+ }
15462
+ }, [mappedValue]);
15463
+ return (React.createElement("div", null,
15464
+ React.createElement(KeyValueInputsList, { title: 'Class and Method Pairs', tooltip: 'Specify class name and method name pairs to instrument. Class name should be fully qualified (e.g., com.example.service.UserService) and method name should be exact (e.g., createUser).', value: mappedValue, onChange: handleChange, errorMessage: errorMessage, required: true, keyPlaceholder: 'Class name', valuePlaceholder: 'Method name' })));
15465
+ };
15466
+
15426
15467
  const ALL_HEADERS = ['*'];
15427
15468
  const HeadersCollection = ({ value, setValue, formErrors }) => {
15428
15469
  const errorMessage = formErrors['headersCollection'];
@@ -15508,6 +15549,7 @@ const PayloadCollection = ({ value, setValue, formErrors }) => {
15508
15549
 
15509
15550
  const componentsMap = {
15510
15551
  [InstrumentationRuleType.CodeAttributes]: CodeAttributes,
15552
+ [InstrumentationRuleType.CustomInstrumentation]: CustomInstrumentation,
15511
15553
  [InstrumentationRuleType.HeadersCollection]: HeadersCollection,
15512
15554
  [InstrumentationRuleType.PayloadCollection]: PayloadCollection,
15513
15555
  [InstrumentationRuleType.UnknownType]: null,
@@ -15672,7 +15714,7 @@ const InstrumentationRuleModal = ({ isEnterprise, createInstrumentationRule }) =
15672
15714
  };
15673
15715
 
15674
15716
  const buildSpecCell = (rule) => {
15675
- const { payloadCollection, codeAttributes } = rule;
15717
+ const { payloadCollection, codeAttributes, customInstrumentations } = rule;
15676
15718
  let str = '';
15677
15719
  if (!!payloadCollection) {
15678
15720
  str += Object.entries(payloadCollection)
@@ -15686,6 +15728,16 @@ const buildSpecCell = (rule) => {
15686
15728
  .map(([key, val]) => key)
15687
15729
  .join(', ');
15688
15730
  }
15731
+ if (!!customInstrumentations) {
15732
+ const probes = customInstrumentations[CustomInstrumentationsKeyTypes.Probes] || [];
15733
+ const customStr = probes
15734
+ .filter(probe => probe.className && probe.methodName)
15735
+ .map(probe => `${probe.className}.${probe.methodName}`)
15736
+ .join(', ');
15737
+ if (customStr) {
15738
+ str += str ? `, ${customStr}` : customStr;
15739
+ }
15740
+ }
15689
15741
  return str;
15690
15742
  };
15691
15743
 
package/lib/functions.js CHANGED
@@ -1,13 +1,13 @@
1
- export { c as capitalizeFirstLetter, f as flattenObjectKeys, g as getConditionsBooleans, a as getMonitorIcon, b as getStatusIcon, i as isValidVersion, m as mapConditions, n as numbersOnly, p as parseBooleanFromString, d as parseJsonStringToPrettyString, r as removeEmptyValuesFromObject, s as safeJsonStringify, e as splitCamelString } from './index-BJpPcCBm.js';
2
- export { c as compareCondition, d as deepClone, f as filterActions, a as filterDestinations, b as filterDestinationsByStream, e as filterSources, g as filterSourcesByStream, h as formatBytes, j as getContainersIcons, i as getContainersInstrumentedCount, k as getDestinationIcon, l as getEntityIcon, m as getEntityLabel, n as getMetricForEntity, o as getPlatformIcon, p as getPlatformLabel, q as getValueForRange, r as getWorkloadId, s as getYamlFieldsForDestination, t as isOverTime, u as mapDestinationFieldsForDisplay, v as sleep } from './index-CpT8LSxY.js';
3
- export { m as getActionIcon, n as getEntityId, o as getInstrumentationRuleIcon, p as getProgrammingLanguageIcon } from './index-BRGQ84pJ.js';
1
+ export { c as capitalizeFirstLetter, f as flattenObjectKeys, g as getConditionsBooleans, a as getMonitorIcon, b as getStatusIcon, i as isValidVersion, m as mapConditions, n as numbersOnly, p as parseBooleanFromString, d as parseJsonStringToPrettyString, r as removeEmptyValuesFromObject, s as safeJsonStringify, e as splitCamelString } from './index-CrXEzEGw.js';
2
+ export { c as compareCondition, d as deepClone, f as filterActions, a as filterDestinations, b as filterDestinationsByStream, e as filterSources, g as filterSourcesByStream, h as formatBytes, j as getContainersIcons, i as getContainersInstrumentedCount, k as getDestinationIcon, l as getEntityIcon, m as getEntityLabel, n as getMetricForEntity, o as getPlatformIcon, p as getPlatformLabel, q as getValueForRange, r as getWorkloadId, s as getYamlFieldsForDestination, t as isOverTime, u as mapDestinationFieldsForDisplay, v as sleep } from './index-D_SG1Qp0.js';
3
+ export { m as getActionIcon, n as getEntityId, o as getInstrumentationRuleIcon, p as getProgrammingLanguageIcon } from './index-Bw7RE2T2.js';
4
4
  export { g as getIdFromSseTarget, i as isLegalK8sLabel, m as mapExportedSignals } from './index-BlZKWuxe.js';
5
5
  import { EntityTypes } from './types.js';
6
6
  export { i as isEmpty, s as safeJsonParse } from './index-BV85P9UP.js';
7
7
  import 'react';
8
8
  import 'styled-components';
9
- import './index-CeHgnkLY.js';
10
- import './index-DypjdLnz.js';
9
+ import './index-DxR7e2Cq.js';
10
+ import './index-ZTzxu5fz.js';
11
11
 
12
12
  const cleanObjectEmptyStringsValues = (obj) => {
13
13
  const cleanArray = (arr) => arr.filter((item) => {
@@ -1,12 +1,12 @@
1
1
  import { type InstrumentationRule, type InstrumentationRuleFormData } from '@/types';
2
2
  export declare const useInstrumentationRuleFormData: () => {
3
3
  formData: InstrumentationRuleFormData;
4
- formErrors: Partial<Record<"ruleName" | "notes" | "disabled" | "workloads" | "instrumentationLibraries" | "codeAttributes" | "headersCollection" | "payloadCollection", string>>;
4
+ formErrors: Partial<Record<"ruleName" | "notes" | "disabled" | "workloads" | "instrumentationLibraries" | "codeAttributes" | "headersCollection" | "payloadCollection" | "customInstrumentations", string>>;
5
5
  handleFormChange: (key?: string | undefined, val?: any, obj?: InstrumentationRuleFormData | undefined) => void;
6
6
  resetFormData: () => void;
7
7
  validateForm: (params?: {
8
8
  withAlert?: boolean;
9
9
  alertTitle?: string;
10
10
  }) => boolean;
11
- loadFormWithDrawerItem: ({ ruleName, notes, disabled, payloadCollection, codeAttributes }: InstrumentationRule) => void;
11
+ loadFormWithDrawerItem: ({ ruleName, notes, disabled, payloadCollection, codeAttributes, headersCollection, customInstrumentations }: InstrumentationRule) => void;
12
12
  };
package/lib/hooks.js CHANGED
@@ -1,7 +1,7 @@
1
- export { u as useActionFormData, a as useClickNode, b as useClickNotification, c as useDataStreamFormData, d as useDestinationFormData, e as useSessionStorage, f as useSourceFormData, g as useSourceSelectionFormData } from './useSourceSelectionFormData-CMXqoHZs.js';
2
- export { u as useContainerSize, a as useCopy, b as useGenericForm, c as useInstrumentationRuleFormData, d as useKeyDown, e as useOnClickOutside, f as useTimeAgo, g as useTransition } from './useTransition-DsrDiKOV.js';
1
+ export { u as useActionFormData, a as useClickNode, b as useClickNotification, c as useDataStreamFormData, d as useDestinationFormData, e as useSessionStorage, f as useSourceFormData, g as useSourceSelectionFormData } from './useSourceSelectionFormData-BP-O55O3.js';
2
+ export { u as useContainerSize, a as useCopy, b as useGenericForm, c as useInstrumentationRuleFormData, d as useKeyDown, e as useOnClickOutside, f as useTimeAgo, g as useTransition } from './useTransition-DanOnTji.js';
3
3
  import './types.js';
4
- import './index-BRGQ84pJ.js';
4
+ import './index-Bw7RE2T2.js';
5
5
  import 'react';
6
6
  import 'styled-components';
7
7
  import './index-BV85P9UP.js';
@@ -0,0 +1,7 @@
1
+ import type { StoryFn } from '@storybook/react-webpack5';
2
+ declare const _default: {
3
+ title: string;
4
+ component: import("../../../types").SVG;
5
+ };
6
+ export default _default;
7
+ export declare const Default: StoryFn;
@@ -0,0 +1,2 @@
1
+ import type { SVG } from '@/types';
2
+ export declare const CustomInstrumentationIcon: SVG;
@@ -1,3 +1,4 @@
1
1
  export * from './code-attributes-icon/index';
2
+ export * from './custom-instrumentation-icon/index';
2
3
  export * from './headers-collection-icon/index';
3
4
  export * from './payload-collection-icon/index';
package/lib/icons.js CHANGED
@@ -1,10 +1,10 @@
1
- import { T as Theme } from './index-BRGQ84pJ.js';
2
- export { q as AddClusterInfoIcon, x as CPlusPlusLogo, y as CSharpLogo, C as CodeAttributesIcon, r as DeleteAttributeIcon, z as DotnetLogo, E as ElixirLogo, G as GoLogo, H as HeadersCollectionIcon, t as ImageErrorIcon, J as JavaLogo, K as K8sLogo, v as KafkaLogo, N as MysqlLogo, O as NginxLogo, Q as NodejsLogo, w as PayloadCollectionIcon, U as PhpLogo, P as PiiMaskingIcon, V as PostgresLogo, W as PythonLogo, X as RedisLogo, R as RenameAttributeIcon, Y as RubyLogo, Z as RustLogo, s as SamplerIcon, _ as SwiftLogo } from './index-BRGQ84pJ.js';
3
- export { C as CheckCircledIcon, E as ErrorTriangleIcon, I as InfoIcon, L as LogsIcon, M as MetricsIcon, O as OdigosLogo, T as TracesIcon, W as WarningTriangleIcon } from './index-CeHgnkLY.js';
4
- export { C as CrossCircledIcon, D as DataStreamsIcon, F as FilterIcon, K as KeyIcon, N as NotificationIcon, O as OdigosLogoText, a as OverviewIcon, R as RetryIcon, S as SlackLogo, T as TerminalIcon } from './index-C4aVlsHh.js';
5
- export { A as ArrowIcon, h as CheckIcon, C as CodeIcon, a as CopyIcon, i as CrossIcon, E as EditIcon, b as EditedIcon, c as ExtendArrowIcon, f as EyeClosedIcon, g as EyeOpenIcon, L as ListIcon, M as MinusIcon, N as NoDataIcon, d as NotebookIcon, P as PlusIcon, S as SearchIcon, e as SortArrowsIcon, T as TrashIcon, X as XIcon } from './index-BUCure0Q.js';
1
+ import { T as Theme } from './index-Bw7RE2T2.js';
2
+ export { q as AddClusterInfoIcon, y as CPlusPlusLogo, z as CSharpLogo, C as CodeAttributesIcon, w as CustomInstrumentationIcon, r as DeleteAttributeIcon, E as DotnetLogo, G as ElixirLogo, J as GoLogo, H as HeadersCollectionIcon, t as ImageErrorIcon, N as JavaLogo, K as K8sLogo, v as KafkaLogo, O as MysqlLogo, Q as NginxLogo, U as NodejsLogo, x as PayloadCollectionIcon, V as PhpLogo, P as PiiMaskingIcon, W as PostgresLogo, X as PythonLogo, Y as RedisLogo, R as RenameAttributeIcon, Z as RubyLogo, _ as RustLogo, s as SamplerIcon, $ as SwiftLogo } from './index-Bw7RE2T2.js';
3
+ export { C as CheckCircledIcon, E as ErrorTriangleIcon, I as InfoIcon, L as LogsIcon, M as MetricsIcon, O as OdigosLogo, T as TracesIcon, W as WarningTriangleIcon } from './index-DxR7e2Cq.js';
4
+ export { C as CrossCircledIcon, D as DataStreamsIcon, F as FilterIcon, K as KeyIcon, N as NotificationIcon, O as OdigosLogoText, a as OverviewIcon, R as RetryIcon, S as SlackLogo, T as TerminalIcon } from './index-BIYXaOIt.js';
5
+ export { A as ArrowIcon, h as CheckIcon, C as CodeIcon, a as CopyIcon, i as CrossIcon, E as EditIcon, b as EditedIcon, c as ExtendArrowIcon, f as EyeClosedIcon, g as EyeOpenIcon, L as ListIcon, M as MinusIcon, N as NoDataIcon, d as NotebookIcon, P as PlusIcon, S as SearchIcon, e as SortArrowsIcon, T as TrashIcon, X as XIcon } from './index-CkTdd3MS.js';
6
6
  import React from 'react';
7
- export { a3 as ActionsIcon, A as AlaudaLogo, a as AlibabaCloudLogo, b as AppDynamicsLogo, c as AwsCloudwatchLogo, d as AwsS3Logo, e as AwsXrayLogo, f as AxiomLogo, B as BetterStackLogo, g as BlobStorageLogo, h as BonreeLogo, C as CauselyLogo, i as ChecklyLogo, j as ChronosphereLogo, k as ClickhouseLogo, l as CoralogixLogo, D as Dash0Logo, m as DatadogLogo, a4 as DestinationsIcon, n as DynatraceLogo, E as ElasticApmLogo, o as ElasticSearchLogo, G as GigapipeLogo, p as GoogleCloudPlatformLogo, q as GrafanaLogo, r as GreptimeLogo, s as GroundcoverLogo, H as HoneycombLogo, t as HyperDxLogo, I as InstanaLogo, J as JaegerLogo, K as KloudmateLogo, L as Last9Logo, u as LightstepLogo, v as LogzioLogo, w as LokiLogo, x as LumigoLogo, M as MiddlewareLogo, a5 as NamespacesIcon, N as NewRelicLogo, O as ObserveLogo, y as OneUptimeLogo, z as OpenObserveLogo, F as OpenTelemetryLogo, P as OpsVerseLogo, Q as OracleLogo, R as PrometheusLogo, S as QrynLogo, T as QuickwitLogo, a6 as RulesIcon, U as SeqLogo, W as SignozLogo, a7 as SourcesIcon, X as SplunkLogo, Y as SumoLogicLogo, Z as TelemetryHubLogo, _ as TempoLogo, $ as TingyunLogo, a0 as TraceloopLogo, a1 as UptraceLogo, a2 as VictoriaMetricsLogo, V as VmLogo } from './index-DypjdLnz.js';
7
+ export { a3 as ActionsIcon, A as AlaudaLogo, a as AlibabaCloudLogo, b as AppDynamicsLogo, c as AwsCloudwatchLogo, d as AwsS3Logo, e as AwsXrayLogo, f as AxiomLogo, B as BetterStackLogo, g as BlobStorageLogo, h as BonreeLogo, C as CauselyLogo, i as ChecklyLogo, j as ChronosphereLogo, k as ClickhouseLogo, l as CoralogixLogo, D as Dash0Logo, m as DatadogLogo, a4 as DestinationsIcon, n as DynatraceLogo, E as ElasticApmLogo, o as ElasticSearchLogo, G as GigapipeLogo, p as GoogleCloudPlatformLogo, q as GrafanaLogo, r as GreptimeLogo, s as GroundcoverLogo, H as HoneycombLogo, t as HyperDxLogo, I as InstanaLogo, J as JaegerLogo, K as KloudmateLogo, L as Last9Logo, u as LightstepLogo, v as LogzioLogo, w as LokiLogo, x as LumigoLogo, M as MiddlewareLogo, a5 as NamespacesIcon, N as NewRelicLogo, O as ObserveLogo, y as OneUptimeLogo, z as OpenObserveLogo, F as OpenTelemetryLogo, P as OpsVerseLogo, Q as OracleLogo, R as PrometheusLogo, S as QrynLogo, T as QuickwitLogo, a6 as RulesIcon, U as SeqLogo, W as SignozLogo, a7 as SourcesIcon, X as SplunkLogo, Y as SumoLogicLogo, Z as TelemetryHubLogo, _ as TempoLogo, $ as TingyunLogo, a0 as TraceloopLogo, a1 as UptraceLogo, a2 as VictoriaMetricsLogo, V as VmLogo } from './index-ZTzxu5fz.js';
8
8
  import './types.js';
9
9
  import 'styled-components';
10
10
 
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { T as Theme } from './index-BRGQ84pJ.js';
2
+ import { T as Theme } from './index-Bw7RE2T2.js';
3
3
 
4
4
  const OdigosLogoText = ({ size = 16, fill: f, rotate = 0, onClick }) => {
5
5
  const theme = Theme.useTheme();
@@ -1,10 +1,10 @@
1
1
  import React from 'react';
2
- import { T as Theme, B as BUTTON_TEXTS, l as DISPLAY_TITLES } from './index-BRGQ84pJ.js';
3
- import { E as EditIcon } from './index-BUCure0Q.js';
4
- import { B as Button, V as Text, J as NotificationNote } from './index-B1IScVBT.js';
2
+ import { T as Theme, B as BUTTON_TEXTS, l as DISPLAY_TITLES } from './index-Bw7RE2T2.js';
3
+ import { E as EditIcon } from './index-CkTdd3MS.js';
4
+ import { B as Button, V as Text, J as NotificationNote } from './index-DXBePB-r.js';
5
5
  import { StatusType } from './types.js';
6
6
  import 'styled-components';
7
- import { I as InfoIcon } from './index-CeHgnkLY.js';
7
+ import { I as InfoIcon } from './index-DxR7e2Cq.js';
8
8
 
9
9
  const EditButton = ({ label, onClick, variant = 'tertiary', ...props }) => {
10
10
  const theme = Theme.useTheme();
@@ -104,6 +104,14 @@ const CodeAttributesIcon = ({ size = 16, fill: f, rotate = 0, onClick }) => {
104
104
  React.createElement("path", { stroke: fill, strokeWidth: '1.5', strokeLinecap: 'round', strokeLinejoin: 'round', d: 'M8 4C6.34315 4 5 5.19391 5 6.66667V9.33333C5 10.8061 3.65685 12 2 12C3.65685 12 5 13.1939 5 14.6667V17.3333C5 18.8061 6.34315 20 8 20M16 4C17.6569 4 19 5.19391 19 6.66667V9.33333C19 10.8061 20.3431 12 22 12C20.3431 12 19 13.1939 19 14.6667V17.3333C19 18.8061 17.6569 20 16 20M12.001 12H12M15.001 12H15M9.001 12H9' })));
105
105
  };
106
106
 
107
+ const CustomInstrumentationIcon = ({ size = 16, fill: f, rotate = 0, onClick }) => {
108
+ const theme = Theme.useTheme();
109
+ const fill = f || theme.text.secondary;
110
+ return (React.createElement("svg", { width: size, height: size, viewBox: '0 0 24 24', xmlns: 'http://www.w3.org/2000/svg', fill: 'none', style: { transform: `rotate(${rotate}deg)` }, onClick: onClick },
111
+ React.createElement("path", { stroke: fill, strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: '1.5', d: 'M8 9H16M8 13H12M8 17H16M3 5C3 3.89543 3.89543 3 5 3H19C20.1046 3 21 3.89543 21 5V19C21 20.1046 20.1046 21 19 21H5C3.89543 21 3 20.1046 3 19V5Z' }),
112
+ React.createElement("circle", { cx: '17', cy: '7', r: '2', stroke: fill, strokeWidth: '1.5', fill: 'none' })));
113
+ };
114
+
107
115
  const HeadersCollectionIcon = ({ size = 16, fill: f, rotate = 0, onClick }) => {
108
116
  const theme = Theme.useTheme();
109
117
  const fill = f || theme.text.secondary;
@@ -695,6 +703,7 @@ const ACTION_OPTIONS = [
695
703
  const getInstrumentationRuleIcon = (type) => {
696
704
  const LOGOS = {
697
705
  [InstrumentationRuleType.CodeAttributes]: CodeAttributesIcon,
706
+ [InstrumentationRuleType.CustomInstrumentation]: CustomInstrumentationIcon,
698
707
  [InstrumentationRuleType.HeadersCollection]: HeadersCollectionIcon,
699
708
  [InstrumentationRuleType.PayloadCollection]: PayloadCollectionIcon,
700
709
  [InstrumentationRuleType.UnknownType]: ImageErrorIcon,
@@ -709,7 +718,15 @@ const INSTRUMENTATION_RULE_OPTIONS = [
709
718
  label: 'Code Attributes',
710
719
  description: 'Collect code attributes containing payload data to traces.',
711
720
  docsEndpoint: '/pipeline/rules/codeattributes',
712
- docsDescription: 'The Code Attributes Rule can be used to add code attributes containing payload data to traces.',
721
+ docsDescription: 'The "Code Attributes" Rule can be used to add code attributes containing payload data to traces.',
722
+ },
723
+ {
724
+ type: InstrumentationRuleType.CustomInstrumentation,
725
+ icon: getInstrumentationRuleIcon(InstrumentationRuleType.CustomInstrumentation),
726
+ label: 'Custom Instrumentation',
727
+ description: 'Define custom instrumentation for specific class and method combinations.',
728
+ docsEndpoint: '/pipeline/rules/custominstrumentation',
729
+ docsDescription: 'The "Custom Instrumentation" Rule can be used to instrument specific class and method combinations for detailed tracing.',
713
730
  },
714
731
  {
715
732
  type: InstrumentationRuleType.HeadersCollection,
@@ -717,7 +734,7 @@ const INSTRUMENTATION_RULE_OPTIONS = [
717
734
  label: 'Headers Collection',
718
735
  description: 'Collect span attributes containing HTTP Headers data to traces.',
719
736
  docsEndpoint: '/pipeline/rules/headerscollection',
720
- docsDescription: 'The Headers Collection Rule can be used to add span attributes containing HTTP Headers data to traces.',
737
+ docsDescription: 'The "Headers Collection" Rule can be used to add span attributes containing HTTP Headers data to traces.',
721
738
  },
722
739
  {
723
740
  type: InstrumentationRuleType.PayloadCollection,
@@ -725,7 +742,7 @@ const INSTRUMENTATION_RULE_OPTIONS = [
725
742
  label: 'Payload Collection',
726
743
  description: 'Collect span attributes containing payload data to traces.',
727
744
  docsEndpoint: '/pipeline/rules/payloadcollection',
728
- docsDescription: 'The Payload Collection Rule can be used to add span attributes containing payload data to traces.',
745
+ docsDescription: 'The "Payload Collection" Rule can be used to add span attributes containing payload data to traces.',
729
746
  },
730
747
  ];
731
748
 
@@ -1871,4 +1888,4 @@ var animations = /*#__PURE__*/Object.freeze({
1871
1888
 
1872
1889
  const Theme = { Provider, useTheme, opacity, animations };
1873
1890
 
1874
- export { styleInject as $, ACTION_OPTIONS as A, BUTTON_TEXTS as B, CodeAttributesIcon as C, DISPLAY_LANGUAGES as D, ElixirLogo as E, FORM_ALERTS as F, GoLogo as G, HeadersCollectionIcon as H, INSTRUMENTATION_RULE_OPTIONS as I, JavaLogo as J, K8sLogo as K, LANGUAGE_OPTIONS as L, MONITORS_OPTIONS as M, MysqlLogo as N, NginxLogo as O, PiiMaskingIcon as P, NodejsLogo as Q, RenameAttributeIcon as R, STORAGE_KEYS as S, Theme as T, PhpLogo as U, PostgresLogo as V, PythonLogo as W, RedisLogo as X, RubyLogo as Y, RustLogo as Z, SwiftLogo as _, useDataStreamStore as a, useDrawerStore as b, useEntityStore as c, useFilterStore as d, useInstrumentStore as e, useModalStore as f, useNotificationStore as g, usePendingStore as h, useSelectedStore as i, useSetupStore as j, DEFAULT_DATA_STREAM_NAME as k, DISPLAY_TITLES as l, getActionIcon as m, getEntityId as n, getInstrumentationRuleIcon as o, getProgrammingLanguageIcon as p, AddClusterInfoIcon as q, DeleteAttributeIcon as r, SamplerIcon as s, ImageErrorIcon as t, useDarkMode as u, KafkaLogo as v, PayloadCollectionIcon as w, CPlusPlusLogo as x, CSharpLogo as y, DotnetLogo as z };
1891
+ export { SwiftLogo as $, ACTION_OPTIONS as A, BUTTON_TEXTS as B, CodeAttributesIcon as C, DISPLAY_LANGUAGES as D, DotnetLogo as E, FORM_ALERTS as F, ElixirLogo as G, HeadersCollectionIcon as H, INSTRUMENTATION_RULE_OPTIONS as I, GoLogo as J, K8sLogo as K, LANGUAGE_OPTIONS as L, MONITORS_OPTIONS as M, JavaLogo as N, MysqlLogo as O, PiiMaskingIcon as P, NginxLogo as Q, RenameAttributeIcon as R, STORAGE_KEYS as S, Theme as T, NodejsLogo as U, PhpLogo as V, PostgresLogo as W, PythonLogo as X, RedisLogo as Y, RubyLogo as Z, RustLogo as _, useDataStreamStore as a, styleInject as a0, useDrawerStore as b, useEntityStore as c, useFilterStore as d, useInstrumentStore as e, useModalStore as f, useNotificationStore as g, usePendingStore as h, useSelectedStore as i, useSetupStore as j, DEFAULT_DATA_STREAM_NAME as k, DISPLAY_TITLES as l, getActionIcon as m, getEntityId as n, getInstrumentationRuleIcon as o, getProgrammingLanguageIcon as p, AddClusterInfoIcon as q, DeleteAttributeIcon as r, SamplerIcon as s, ImageErrorIcon as t, useDarkMode as u, KafkaLogo as v, CustomInstrumentationIcon as w, PayloadCollectionIcon as x, CPlusPlusLogo as y, CSharpLogo as z };
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { T as Theme } from './index-BRGQ84pJ.js';
2
+ import { T as Theme } from './index-Bw7RE2T2.js';
3
3
 
4
4
  const ArrowIcon = ({ size = 16, fill: f, rotate = 0, onClick }) => {
5
5
  const theme = Theme.useTheme();
@@ -1,8 +1,8 @@
1
1
  import { StatusType, OtherStatus, SignalType } from './types.js';
2
2
  import 'react';
3
- import './index-BRGQ84pJ.js';
3
+ import './index-Bw7RE2T2.js';
4
4
  import 'styled-components';
5
- import { T as TracesIcon, M as MetricsIcon, L as LogsIcon, O as OdigosLogo, I as InfoIcon, W as WarningTriangleIcon, E as ErrorTriangleIcon, C as CheckCircledIcon } from './index-CeHgnkLY.js';
5
+ import { T as TracesIcon, M as MetricsIcon, L as LogsIcon, O as OdigosLogo, I as InfoIcon, W as WarningTriangleIcon, E as ErrorTriangleIcon, C as CheckCircledIcon } from './index-DxR7e2Cq.js';
6
6
 
7
7
  const capitalizeFirstLetter = (string) => {
8
8
  return string.charAt(0).toUpperCase() + string.slice(1);
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
- import { _ as WarningModal } from './index-B1IScVBT.js';
2
+ import { _ as WarningModal } from './index-DXBePB-r.js';
3
3
  import { StatusType, EntityTypes } from './types.js';
4
- import './index-BRGQ84pJ.js';
4
+ import './index-Bw7RE2T2.js';
5
5
  import 'styled-components';
6
6
 
7
7
  const CancelWarning = ({ isOpen, noOverlay, name, onApprove, onDeny }) => {
@@ -1,13 +1,13 @@
1
1
  import React, { useState, useEffect, useRef, forwardRef, createElement, useCallback, useMemo, Fragment } from 'react';
2
- import { T as Theme, t as ImageErrorIcon, M as MONITORS_OPTIONS, g as useNotificationStore, l as DISPLAY_TITLES, L as LANGUAGE_OPTIONS, F as FORM_ALERTS, p as getProgrammingLanguageIcon, D as DISPLAY_LANGUAGES, B as BUTTON_TEXTS } from './index-BRGQ84pJ.js';
2
+ import { T as Theme, t as ImageErrorIcon, M as MONITORS_OPTIONS, g as useNotificationStore, l as DISPLAY_TITLES, L as LANGUAGE_OPTIONS, F as FORM_ALERTS, p as getProgrammingLanguageIcon, D as DISPLAY_LANGUAGES, B as BUTTON_TEXTS } from './index-Bw7RE2T2.js';
3
3
  import { StatusType, OtherStatus, ProgrammingLanguages, SortDirection, IntrumentationStatus, InputTypes, FieldTypes } from './types.js';
4
- import { M as MinusIcon, h as CheckIcon, L as ListIcon, C as CodeIcon, c as ExtendArrowIcon, E as EditIcon, i as CrossIcon, T as TrashIcon, e as SortArrowsIcon, b as EditedIcon, a as CopyIcon, d as NotebookIcon, X as XIcon, f as EyeClosedIcon, g as EyeOpenIcon, N as NoDataIcon, S as SearchIcon, P as PlusIcon, A as ArrowIcon } from './index-BUCure0Q.js';
5
- import { b as getStatusIcon, r as removeEmptyValuesFromObject, s as safeJsonStringify, f as flattenObjectKeys, m as mapConditions, g as getConditionsBooleans, c as capitalizeFirstLetter, a as getMonitorIcon, i as isValidVersion, d as parseJsonStringToPrettyString, e as splitCamelString, p as parseBooleanFromString, n as numbersOnly } from './index-BJpPcCBm.js';
4
+ import { M as MinusIcon, h as CheckIcon, L as ListIcon, C as CodeIcon, c as ExtendArrowIcon, E as EditIcon, i as CrossIcon, T as TrashIcon, e as SortArrowsIcon, b as EditedIcon, a as CopyIcon, d as NotebookIcon, X as XIcon, f as EyeClosedIcon, g as EyeOpenIcon, N as NoDataIcon, S as SearchIcon, P as PlusIcon, A as ArrowIcon } from './index-CkTdd3MS.js';
5
+ import { b as getStatusIcon, r as removeEmptyValuesFromObject, s as safeJsonStringify, f as flattenObjectKeys, m as mapConditions, g as getConditionsBooleans, c as capitalizeFirstLetter, a as getMonitorIcon, i as isValidVersion, d as parseJsonStringToPrettyString, e as splitCamelString, p as parseBooleanFromString, n as numbersOnly } from './index-CrXEzEGw.js';
6
6
  import styled, { css } from 'styled-components';
7
7
  import { s as safeJsonParse, i as isEmpty } from './index-BV85P9UP.js';
8
- import { b as useGenericForm, e as useOnClickOutside, d as useKeyDown, u as useContainerSize, a as useCopy, g as useTransition } from './useTransition-DsrDiKOV.js';
8
+ import { b as useGenericForm, e as useOnClickOutside, d as useKeyDown, u as useContainerSize, a as useCopy, g as useTransition } from './useTransition-DanOnTji.js';
9
9
  import ReactDOM from 'react-dom';
10
- import { I as InfoIcon } from './index-CeHgnkLY.js';
10
+ import { I as InfoIcon } from './index-DxR7e2Cq.js';
11
11
 
12
12
  const TextWrapper$2 = styled.div `
13
13
  color: ${({ $color, theme }) => $color || theme.text.secondary};
@@ -5631,7 +5631,7 @@ const INITIAL_ROW = {
5631
5631
  key: '',
5632
5632
  value: '',
5633
5633
  };
5634
- const KeyValueInputsList = ({ initialKeyValuePairs = [], value, onChange, title, tooltip, required, errorMessage }) => {
5634
+ const KeyValueInputsList = ({ initialKeyValuePairs = [], value, onChange, title, tooltip, required, errorMessage, keyPlaceholder = 'Attribute name', valuePlaceholder = 'Attribute value' }) => {
5635
5635
  const theme = Theme.useTheme();
5636
5636
  const [rows, setRows] = useState(value || initialKeyValuePairs);
5637
5637
  useEffect(() => {
@@ -5674,10 +5674,10 @@ const KeyValueInputsList = ({ initialKeyValuePairs = [], value, onChange, title,
5674
5674
  return (React.createElement(Container$a, null,
5675
5675
  React.createElement(FieldLabel, { title: title, required: required, tooltip: tooltip }),
5676
5676
  React.createElement(ListContainer$1, null, rows.map(({ key, value }, idx) => (React.createElement(RowWrapper, { key: `key-value-input-list-${idx}` },
5677
- React.createElement(Input, { placeholder: 'Attribute name', value: key, onChange: (e) => handleChange('key', e.target.value, idx), hasError: !!errorMessage && (!required || (required && !key)), autoFocus: isEmpty(value) && !isMinRows && idx === rows.length - 1 }),
5677
+ React.createElement(Input, { placeholder: keyPlaceholder, value: key, onChange: (e) => handleChange('key', e.target.value, idx), hasError: !!errorMessage && (!required || (required && !key)), autoFocus: isEmpty(value) && !isMinRows && idx === rows.length - 1 }),
5678
5678
  React.createElement("div", null,
5679
5679
  React.createElement(ArrowIcon, { rotate: 180, fill: theme.text.darker_grey })),
5680
- React.createElement(Input, { placeholder: 'Attribute value', value: value, onChange: (e) => handleChange('value', e.target.value, idx), hasError: !!errorMessage && (!required || (required && isEmpty(value))), autoFocus: false }),
5680
+ React.createElement(Input, { placeholder: valuePlaceholder, value: value, onChange: (e) => handleChange('value', e.target.value, idx), hasError: !!errorMessage && (!required || (required && isEmpty(value))), autoFocus: false }),
5681
5681
  React.createElement(DeleteButton, { disabled: isDelButtonDisabled, onClick: () => {
5682
5682
  if (isMinRows) {
5683
5683
  handleChange('key', '', idx);
@@ -1,9 +1,9 @@
1
1
  import { StatusType, DestinationTypes, EntityTypes, PlatformType } from './types.js';
2
- import { k as DEFAULT_DATA_STREAM_NAME, p as getProgrammingLanguageIcon, v as KafkaLogo, K as K8sLogo } from './index-BRGQ84pJ.js';
2
+ import { k as DEFAULT_DATA_STREAM_NAME, p as getProgrammingLanguageIcon, v as KafkaLogo, K as K8sLogo } from './index-Bw7RE2T2.js';
3
3
  import 'react';
4
4
  import 'styled-components';
5
- import { e as AwsXrayLogo, a2 as VictoriaMetricsLogo, a1 as UptraceLogo, a0 as TraceloopLogo, $ as TingyunLogo, _ as TempoLogo, Z as TelemetryHubLogo, Y as SumoLogicLogo, X as SplunkLogo, W as SignozLogo, U as SeqLogo, d as AwsS3Logo, T as QuickwitLogo, G as GigapipeLogo, S as QrynLogo, R as PrometheusLogo, F as OpenTelemetryLogo, Q as OracleLogo, P as OpsVerseLogo, z as OpenObserveLogo, y as OneUptimeLogo, O as ObserveLogo, N as NewRelicLogo, M as MiddlewareLogo, x as LumigoLogo, w as LokiLogo, v as LogzioLogo, u as LightstepLogo, L as Last9Logo, K as KloudmateLogo, J as JaegerLogo, I as InstanaLogo, t as HyperDxLogo, H as HoneycombLogo, s as GroundcoverLogo, r as GreptimeLogo, q as GrafanaLogo, p as GoogleCloudPlatformLogo, o as ElasticSearchLogo, E as ElasticApmLogo, n as DynatraceLogo, m as DatadogLogo, D as Dash0Logo, l as CoralogixLogo, c as AwsCloudwatchLogo, k as ClickhouseLogo, j as ChronosphereLogo, i as ChecklyLogo, C as CauselyLogo, h as BonreeLogo, B as BetterStackLogo, g as BlobStorageLogo, f as AxiomLogo, b as AppDynamicsLogo, a as AlibabaCloudLogo, A as AlaudaLogo, a6 as RulesIcon, a3 as ActionsIcon, a4 as DestinationsIcon, a7 as SourcesIcon, a5 as NamespacesIcon, V as VmLogo } from './index-DypjdLnz.js';
6
- import { O as OdigosLogo } from './index-CeHgnkLY.js';
5
+ import { e as AwsXrayLogo, a2 as VictoriaMetricsLogo, a1 as UptraceLogo, a0 as TraceloopLogo, $ as TingyunLogo, _ as TempoLogo, Z as TelemetryHubLogo, Y as SumoLogicLogo, X as SplunkLogo, W as SignozLogo, U as SeqLogo, d as AwsS3Logo, T as QuickwitLogo, G as GigapipeLogo, S as QrynLogo, R as PrometheusLogo, F as OpenTelemetryLogo, Q as OracleLogo, P as OpsVerseLogo, z as OpenObserveLogo, y as OneUptimeLogo, O as ObserveLogo, N as NewRelicLogo, M as MiddlewareLogo, x as LumigoLogo, w as LokiLogo, v as LogzioLogo, u as LightstepLogo, L as Last9Logo, K as KloudmateLogo, J as JaegerLogo, I as InstanaLogo, t as HyperDxLogo, H as HoneycombLogo, s as GroundcoverLogo, r as GreptimeLogo, q as GrafanaLogo, p as GoogleCloudPlatformLogo, o as ElasticSearchLogo, E as ElasticApmLogo, n as DynatraceLogo, m as DatadogLogo, D as Dash0Logo, l as CoralogixLogo, c as AwsCloudwatchLogo, k as ClickhouseLogo, j as ChronosphereLogo, i as ChecklyLogo, C as CauselyLogo, h as BonreeLogo, B as BetterStackLogo, g as BlobStorageLogo, f as AxiomLogo, b as AppDynamicsLogo, a as AlibabaCloudLogo, A as AlaudaLogo, a6 as RulesIcon, a3 as ActionsIcon, a4 as DestinationsIcon, a7 as SourcesIcon, a5 as NamespacesIcon, V as VmLogo } from './index-ZTzxu5fz.js';
6
+ import { O as OdigosLogo } from './index-DxR7e2Cq.js';
7
7
  import { s as safeJsonParse } from './index-BV85P9UP.js';
8
8
 
9
9
  const compareCondition = (renderCondition, fields) => {
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { T as Theme } from './index-BRGQ84pJ.js';
2
+ import { T as Theme } from './index-Bw7RE2T2.js';
3
3
 
4
4
  const OdigosLogo = ({ size = 16, fill: f, rotate = 0, onClick }) => {
5
5
  const theme = Theme.useTheme();
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { T as Theme } from './index-BRGQ84pJ.js';
2
+ import { T as Theme } from './index-Bw7RE2T2.js';
3
3
 
4
4
  const VmLogo = ({ size = 16, fill: f, rotate = 0, onClick }) => {
5
5
  const theme = Theme.useTheme();
package/lib/snippets.js CHANGED
@@ -1,12 +1,12 @@
1
- export { A as AddButton } from './index-B1IScVBT.js';
2
- export { E as EditButton, N as NoteBackToSummary } from './index-fEP_guwb.js';
1
+ export { A as AddButton } from './index-DXBePB-r.js';
2
+ export { E as EditButton, N as NoteBackToSummary } from './index-BWIOWlkS.js';
3
3
  import 'react';
4
- import './index-BRGQ84pJ.js';
4
+ import './index-Bw7RE2T2.js';
5
5
  import './types.js';
6
6
  import 'styled-components';
7
- import './index-BUCure0Q.js';
8
- import './index-BJpPcCBm.js';
9
- import './index-CeHgnkLY.js';
7
+ import './index-CkTdd3MS.js';
8
+ import './index-CrXEzEGw.js';
9
+ import './index-DxR7e2Cq.js';
10
10
  import './index-BV85P9UP.js';
11
- import './useTransition-DsrDiKOV.js';
11
+ import './useTransition-DanOnTji.js';
12
12
  import 'react-dom';
package/lib/store.js CHANGED
@@ -1,4 +1,4 @@
1
- export { u as useDarkMode, a as useDataStreamStore, b as useDrawerStore, c as useEntityStore, d as useFilterStore, e as useInstrumentStore, f as useModalStore, g as useNotificationStore, h as usePendingStore, i as useSelectedStore, j as useSetupStore } from './index-BRGQ84pJ.js';
1
+ export { u as useDarkMode, a as useDataStreamStore, b as useDrawerStore, c as useEntityStore, d as useFilterStore, e as useInstrumentStore, f as useModalStore, g as useNotificationStore, h as usePendingStore, i as useSelectedStore, j as useSetupStore } from './index-Bw7RE2T2.js';
2
2
  import 'react';
3
3
  import './types.js';
4
4
  import 'styled-components';
package/lib/theme.js CHANGED
@@ -1,4 +1,4 @@
1
- export { T as default } from './index-BRGQ84pJ.js';
1
+ export { T as default } from './index-Bw7RE2T2.js';
2
2
  import 'styled-components';
3
3
  import 'react';
4
4
  import './types.js';
@@ -4,6 +4,7 @@ export declare enum InstrumentationRuleType {
4
4
  CodeAttributes = "CodeAttributes",
5
5
  HeadersCollection = "HeadersCollection",
6
6
  PayloadCollection = "PayloadCollection",
7
+ CustomInstrumentation = "CustomInstrumentation",
7
8
  UnknownType = "UnknownType"
8
9
  }
9
10
  export interface InstrumentationRule {
@@ -22,6 +23,7 @@ export interface InstrumentationRule {
22
23
  codeAttributes?: CodeAttributes | null;
23
24
  headersCollection?: HeadersCollection | null;
24
25
  payloadCollection?: PayloadCollection | null;
26
+ customInstrumentations?: CustomInstrumentations | null;
25
27
  }
26
28
  export declare enum CodeAttributesKeyTypes {
27
29
  Column = "column",
@@ -45,6 +47,16 @@ export declare enum HeadersCollectionKeyTypes {
45
47
  export interface HeadersCollection {
46
48
  [HeadersCollectionKeyTypes.HeaderKeys]?: string[] | null;
47
49
  }
50
+ export declare enum CustomInstrumentationsKeyTypes {
51
+ Probes = "probes"
52
+ }
53
+ export interface CustomInstrumentationProbe {
54
+ className: string;
55
+ methodName: string;
56
+ }
57
+ export interface CustomInstrumentations {
58
+ [CustomInstrumentationsKeyTypes.Probes]?: CustomInstrumentationProbe[] | null;
59
+ }
48
60
  interface HttpPayloadCollection {
49
61
  mimeTypes?: string[] | null;
50
62
  maxPayloadLength?: number | null;
package/lib/types.js CHANGED
@@ -273,6 +273,7 @@ var InstrumentationRuleType;
273
273
  InstrumentationRuleType["CodeAttributes"] = "CodeAttributes";
274
274
  InstrumentationRuleType["HeadersCollection"] = "HeadersCollection";
275
275
  InstrumentationRuleType["PayloadCollection"] = "PayloadCollection";
276
+ InstrumentationRuleType["CustomInstrumentation"] = "CustomInstrumentation";
276
277
  InstrumentationRuleType["UnknownType"] = "UnknownType";
277
278
  })(InstrumentationRuleType || (InstrumentationRuleType = {}));
278
279
  // Code Attributes for Instrumentation Rules
@@ -285,11 +286,16 @@ var CodeAttributesKeyTypes;
285
286
  CodeAttributesKeyTypes["Namespace"] = "namespace";
286
287
  CodeAttributesKeyTypes["StackTrace"] = "stacktrace";
287
288
  })(CodeAttributesKeyTypes || (CodeAttributesKeyTypes = {}));
288
- // Code Attributes for Instrumentation Rules
289
+ // Headers Collection for Instrumentation Rules
289
290
  var HeadersCollectionKeyTypes;
290
291
  (function (HeadersCollectionKeyTypes) {
291
292
  HeadersCollectionKeyTypes["HeaderKeys"] = "headerKeys";
292
293
  })(HeadersCollectionKeyTypes || (HeadersCollectionKeyTypes = {}));
294
+ // Custom Instrumentations for Instrumentation Rules
295
+ var CustomInstrumentationsKeyTypes;
296
+ (function (CustomInstrumentationsKeyTypes) {
297
+ CustomInstrumentationsKeyTypes["Probes"] = "probes";
298
+ })(CustomInstrumentationsKeyTypes || (CustomInstrumentationsKeyTypes = {}));
293
299
  var PayloadCollectionKeyTypes;
294
300
  (function (PayloadCollectionKeyTypes) {
295
301
  PayloadCollectionKeyTypes["HttpRequest"] = "httpRequest";
@@ -313,4 +319,4 @@ var K8sResourceKind;
313
319
  K8sResourceKind["CronJob"] = "CronJob";
314
320
  })(K8sResourceKind || (K8sResourceKind = {}));
315
321
 
316
- export { ActionCategory, ActionKeyTypes, ActionType, AddNodeTypes, BooleanOperation, CodeAttributesKeyTypes, Crud, DestinationTypes, EdgeTypes, EntityTypes, FieldTypes, HeadersCollectionKeyTypes, InputTypes, InstrumentationRuleType, IntrumentationStatus, JsonOperation, K8sResourceKind, NodeTypes, NumberOperation, OtherEntityTypes, OtherStatus, PayloadCollectionKeyTypes, PlatformType, ProgrammingLanguages, SignalType, SortDirection, StatusType, StringOperation, Tier };
322
+ export { ActionCategory, ActionKeyTypes, ActionType, AddNodeTypes, BooleanOperation, CodeAttributesKeyTypes, Crud, CustomInstrumentationsKeyTypes, DestinationTypes, EdgeTypes, EntityTypes, FieldTypes, HeadersCollectionKeyTypes, InputTypes, InstrumentationRuleType, IntrumentationStatus, JsonOperation, K8sResourceKind, NodeTypes, NumberOperation, OtherEntityTypes, OtherStatus, PayloadCollectionKeyTypes, PlatformType, ProgrammingLanguages, SignalType, SortDirection, StatusType, StringOperation, Tier };
@@ -1,9 +1,9 @@
1
1
  import { ActionKeyTypes, ActionType, StatusType, AddNodeTypes, EntityTypes, FieldTypes } from './types.js';
2
- import { g as useNotificationStore, F as FORM_ALERTS, f as useModalStore, b as useDrawerStore, c as useEntityStore, a as useDataStreamStore, j as useSetupStore } from './index-BRGQ84pJ.js';
2
+ import { g as useNotificationStore, F as FORM_ALERTS, f as useModalStore, b as useDrawerStore, c as useEntityStore, a as useDataStreamStore, j as useSetupStore } from './index-Bw7RE2T2.js';
3
3
  import { useState, useEffect, useMemo } from 'react';
4
4
  import 'styled-components';
5
5
  import { i as isEmpty, s as safeJsonParse } from './index-BV85P9UP.js';
6
- import { b as useGenericForm } from './useTransition-DsrDiKOV.js';
6
+ import { b as useGenericForm } from './useTransition-DanOnTji.js';
7
7
  import { g as getIdFromSseTarget, i as isLegalK8sLabel, m as mapExportedSignals } from './index-BlZKWuxe.js';
8
8
 
9
9
  const INITIAL$2 = {
@@ -1,6 +1,6 @@
1
1
  import React, { useState, useRef, useEffect, useCallback } from 'react';
2
- import { g as useNotificationStore } from './index-BRGQ84pJ.js';
3
- import { CodeAttributesKeyTypes, PayloadCollectionKeyTypes } from './types.js';
2
+ import { g as useNotificationStore } from './index-Bw7RE2T2.js';
3
+ import { CustomInstrumentationsKeyTypes, CodeAttributesKeyTypes, PayloadCollectionKeyTypes } from './types.js';
4
4
  import styled from 'styled-components';
5
5
 
6
6
  const useGenericForm = (initialFormData) => {
@@ -142,6 +142,10 @@ const INITIAL = {
142
142
  [CodeAttributesKeyTypes.Namespace]: null,
143
143
  [CodeAttributesKeyTypes.StackTrace]: null,
144
144
  },
145
+ headersCollection: null,
146
+ customInstrumentations: {
147
+ [CustomInstrumentationsKeyTypes.Probes]: null,
148
+ },
145
149
  };
146
150
  const useInstrumentationRuleFormData = () => {
147
151
  const { addNotification } = useNotificationStore();
@@ -152,7 +156,7 @@ const useInstrumentationRuleFormData = () => {
152
156
  handleErrorChange(undefined, undefined, errors);
153
157
  return ok;
154
158
  };
155
- const loadFormWithDrawerItem = ({ ruleName, notes, disabled, payloadCollection, codeAttributes }) => {
159
+ const loadFormWithDrawerItem = ({ ruleName, notes, disabled, payloadCollection, codeAttributes, headersCollection, customInstrumentations }) => {
156
160
  const updatedData = {
157
161
  ...INITIAL,
158
162
  ruleName,
@@ -177,6 +181,14 @@ const useInstrumentationRuleFormData = () => {
177
181
  [CodeAttributesKeyTypes.StackTrace]: codeAttributes[CodeAttributesKeyTypes.StackTrace] || null,
178
182
  };
179
183
  }
184
+ if (headersCollection) {
185
+ updatedData['headersCollection'] = headersCollection;
186
+ }
187
+ if (customInstrumentations) {
188
+ updatedData['customInstrumentations'] = {
189
+ [CustomInstrumentationsKeyTypes.Probes]: customInstrumentations[CustomInstrumentationsKeyTypes.Probes] || null,
190
+ };
191
+ }
180
192
  handleFormChange(undefined, undefined, updatedData);
181
193
  };
182
194
  return {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@odigos/ui-kit",
3
- "version": "0.0.46",
3
+ "version": "0.0.48",
4
4
  "author": "Odigos",
5
5
  "repository": {
6
6
  "type": "git",