@odigos/ui-kit 0.0.287 → 0.0.288

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 (45) hide show
  1. package/.cursor/rules/frontend-workflow.mdc +27 -0
  2. package/.cursor/rules/ui-feedback-tables-forms.mdc +40 -0
  3. package/.cursor/rules/ui-implementation.mdc +21 -0
  4. package/.cursor/rules/ui-pages-and-drawers.mdc +34 -0
  5. package/.cursor/rules/ui-visual-language.mdc +27 -0
  6. package/CHANGELOG.md +15 -0
  7. package/lib/chunks/{helpers-CtkwQ3Wc.js → helpers-BCSEuuKh.js} +1 -1
  8. package/lib/chunks/index-Cy84opXf.js +351 -0
  9. package/lib/chunks/source-instrument-form-context-D6pVu22G.js +5 -0
  10. package/lib/chunks/{ui-components-CjgsN17j.js → ui-components-D8rTJS7r.js} +82 -82
  11. package/lib/components.js +1 -1
  12. package/lib/constants/strings/index.d.ts +6 -0
  13. package/lib/constants.js +1 -1
  14. package/lib/containers/_drawers/edit-source-drawer/overview/instructions-card.d.ts +21 -0
  15. package/lib/containers/insights/settings-and-configurations/panels/guardrails/constants.d.ts +6 -1
  16. package/lib/containers/insights/settings-and-configurations/panels/guardrails/facet-section.d.ts +1 -0
  17. package/lib/containers/insights/settings-and-configurations/panels/guardrails/mappers.d.ts +2 -0
  18. package/lib/containers/insights/settings-and-configurations/panels/system/constants.d.ts +3 -1
  19. package/lib/containers/insights/transactions/helpers.d.ts +2 -1
  20. package/lib/containers.js +516 -469
  21. package/lib/contexts/odigos-api/capabilities.d.ts +2 -0
  22. package/lib/contexts/odigos-api/hooks/use-insights-api.d.ts +7 -1
  23. package/lib/contexts/odigos-api/hooks/use-sources-api.d.ts +10 -1
  24. package/lib/contexts/odigos-api/index.d.ts +1 -1
  25. package/lib/contexts/odigos-api/types.d.ts +24 -1
  26. package/lib/contexts.js +1 -1
  27. package/lib/functions.js +1 -1
  28. package/lib/hooks.js +1 -1
  29. package/lib/{containers/insights/findings/drawer/anomaly/anomaly-blast-radius → snippets/blast-radius}/helpers.d.ts +7 -6
  30. package/lib/snippets/blast-radius/index.d.ts +7 -0
  31. package/lib/snippets/index.d.ts +1 -0
  32. package/lib/snippets.js +1 -1
  33. package/lib/store.js +1 -1
  34. package/lib/theme.js +1 -1
  35. package/lib/types/insights/index.d.ts +11 -11
  36. package/lib/types/workload/index.d.ts +61 -0
  37. package/lib/types.js +1 -1
  38. package/lib/visuals.js +1 -1
  39. package/package.json +1 -1
  40. package/lib/chunks/index-BlYPxLja.js +0 -311
  41. package/lib/chunks/source-instrument-form-context-Bg6JzU76.js +0 -5
  42. package/lib/containers/insights/findings/drawer/anomaly/anomaly-blast-radius/index.d.ts +0 -7
  43. /package/lib/{containers/insights/findings/drawer/anomaly/anomaly-blast-radius → snippets/blast-radius}/animated-edge.d.ts +0 -0
  44. /package/lib/{containers/insights/findings/drawer/anomaly/anomaly-blast-radius → snippets/blast-radius}/blast-radius-node.d.ts +0 -0
  45. /package/lib/{containers/insights/findings/drawer/anomaly/anomaly-blast-radius → snippets/blast-radius}/types.d.ts +0 -0
@@ -23,6 +23,8 @@ export interface Capabilities {
23
23
  canRestartWorkloads: boolean;
24
24
  canFetchPeerSources: boolean;
25
25
  canFetchSourceLibraries: boolean;
26
+ /** The host can tell a customer how to instrument a workload themselves (cloud connectors). */
27
+ canFetchInstrumentationInstructions: boolean;
26
28
  canFetchK8sManifest: boolean;
27
29
  canCreateDestination: boolean;
28
30
  canTestConnection: boolean;
@@ -10,7 +10,7 @@
10
10
  * the `{ insights: { … } }` / mutation-root wire envelope).
11
11
  */
12
12
  import { type UseApiQueryOptions, type UseApiQueryResult } from '../use-api-query';
13
- import type { GetInsightsAnomaliesVars, GetInsightsAnomalyVars, GetInsightsBaselineVars, GetInsightsFindingsVars, GetInsightsGuardrailViolationsVars, GetInsightsGuardrailViolationVars, GetInsightsServiceProfileVars, GetInsightsBlastRadiusVars, GetInsightsObservationVars, GetInsightsObservationsVars, GetInsightsTransactionVars, GetInsightsTransactionsVars, OperationContext, OdigosApiOperations, ForcePromoteInsightsServiceVars, PromoteInsightsBaselineClassVars, ResolveInsightsAnomalyVars } from '../types';
13
+ import type { GetInsightsAnomaliesVars, GetInsightsAnomalyVars, GetInsightsBaselineVars, GetInsightsFindingsVars, GetInsightsGuardrailViolationsVars, GetInsightsGuardrailViolationVars, GetInsightsServiceProfileVars, GetInsightsBlastRadiusVars, GetInsightsObservationVars, GetInsightsObservationsVars, GetInsightsTransactionVars, GetInsightsTransactionsVars, OperationContext, OdigosApiOperations, ForcePromoteInsightsServiceVars, EnableInsightsTransactionGuardrailVars, DisableInsightsTransactionGuardrailVars, PromoteInsightsBaselineClassVars, ResolveInsightsAnomalyVars } from '../types';
14
14
  import type { InsightsAnomalyIssue, InsightsAnomalySummary, InsightsBaselineClass, InsightsBulkResolveResult, InsightsCatalog, InsightsFinding, InsightsGuardrail, InsightsGuardrailViolation, InsightsGuardrailViolationDetail, InsightsLearningPolicy, InsightsLearningPolicyInput, InsightsObservation, InsightsObservationSummary, InsightsPolicy, InsightsPolicyInput, InsightsPromoteResult, InsightsServiceStat, InsightsServiceProfile, InsightsBlastRadiusSubgraph, InsightsStorageHealth, InsightsSystemSettings, InsightsSystemSettingsInput, InsightsTransaction, InsightsTransactionStat, InsightsViolationActionInput, InsightsGuardrailInput, InsightsGuardrailSeedInput, InsightsDeviationClass, InsightsBulkResolution, InsightsPolicyScope, InsightsAnomalyRefInput } from '../../../types';
15
15
  export interface InsightsApi {
16
16
  useServices: (options?: UseApiQueryOptions<InsightsServiceStat[]>) => UseApiQueryResult<InsightsServiceStat[]>;
@@ -105,6 +105,12 @@ export interface InsightsApi {
105
105
  forcePromoteService?: (vars: ForcePromoteInsightsServiceVars) => Promise<{
106
106
  error?: string;
107
107
  } | undefined>;
108
+ enableTransactionGuardrail?: (vars: EnableInsightsTransactionGuardrailVars) => Promise<{
109
+ error?: string;
110
+ } | undefined>;
111
+ disableTransactionGuardrail?: (vars: DisableInsightsTransactionGuardrailVars) => Promise<{
112
+ error?: string;
113
+ } | undefined>;
108
114
  deleteTransaction?: (transactionId: string) => Promise<{
109
115
  error?: string;
110
116
  } | undefined>;
@@ -25,7 +25,7 @@
25
25
  * `useApiQuery('GET_WORKLOADS')` subscriber.
26
26
  */
27
27
  import { type UseApiQueryOptions, type UseApiQueryResult } from '../use-api-query';
28
- import type { GetSourceLibrariesData, GetPeerSourcesVars, OperationContext, OdigosApiOperations } from '../types';
28
+ import type { GetInstrumentationInstructionsData, GetInstrumentationInstructionsVars, GetSourceLibrariesData, GetPeerSourcesVars, OperationContext, OdigosApiOperations } from '../types';
29
29
  import { type PeerSources, type SourceFormData, type Workload, type WorkloadId } from '../../../types';
30
30
  import { type NamespaceSelectionFormData, type SourceSelectionFormData } from '../../../store';
31
31
  export interface PersistSourceInput {
@@ -83,6 +83,15 @@ export interface SourcesApi {
83
83
  }>) => UseApiQueryResult<{
84
84
  peerSources?: PeerSources;
85
85
  }>;
86
+ /**
87
+ * Subscribe to how one workload should be instrumented — the connector-rendered documents a
88
+ * customer applies in manual mode. Owns a `useApiQuery('GET_INSTRUMENTATION_INSTRUCTIONS')`;
89
+ * call at the top level of a container.
90
+ *
91
+ * The slot is optional, so on a host that does not serve it (k8s, which instruments workloads
92
+ * itself) this reports `unsupported` and never fires a request.
93
+ */
94
+ useInstrumentationInstructions: (vars?: GetInstrumentationInstructionsVars, options?: UseApiQueryOptions<GetInstrumentationInstructionsData>) => UseApiQueryResult<GetInstrumentationInstructionsData>;
86
95
  /** Persist the legacy form-shape payload (used by `AddSourceDrawer` / `Onboarding`). */
87
96
  persist: (selectAppsList: SourceSelectionFormData, futureSelectAppsList: NamespaceSelectionFormData) => Promise<void>;
88
97
  /** Persist the V2 multi-cluster payload shape (used by `CentralConnections` / standalone overview's bulk persist). */
@@ -15,7 +15,7 @@ export { useApiQuery, useApiLazyQuery, useApiMutation } from './use-api-query';
15
15
  export { useApiForConnections, type ApiForConnections } from './use-api-for-connections';
16
16
  export type { UseApiQueryOptions, UseApiQueryResult, UseApiLazyQueryResult, UseApiMutationOptions, UseApiMutationResult, UseApiMutationTuple } from './use-api-query';
17
17
  export { pickByPlatform, versionedDocument, vmDialectMap, type VersionedDocumentMap } from './platform-helpers';
18
- export type { ApolloConfig, ApplyRecommendationRemediationResult, ApplyRecommendationRemediationVars, CreateActionResult, CreateActionVars, CreateCostReductionRuleResult, CreateDataStreamResult, CreateDataStreamVars, CreateDestinationResult, CreateDestinationVars, CreateHighlyRelevantOperationRuleResult, CreateInstrumentationRuleResult, CreateInstrumentationRuleVars, CreateNoisyOperationRuleResult, DeleteActionResult, DeleteActionVars, DeleteCostReductionRuleResult, DeleteDataStreamResult, DeleteDataStreamVars, DeleteDestinationResult, DeleteDestinationVars, DeleteHighlyRelevantOperationRuleResult, DeleteInstrumentationRuleResult, DeleteInstrumentationRuleVars, DeleteNoisyOperationRuleResult, DescribeOdigosData, DescribeSourceData, DestinationWireInput, DiagnoseResult, DiagnoseVars, GetActionsData, GetAllClusterSnapshotsData, GetClusterSnapshotData, GetClusterSnapshotVars, GetCollectorPodInfoData, GetCollectorPodInfoVars, GetConfigYamlsData, GetDataStreamsData, GetDestinationsData, GetEffectiveConfigVars, GetGatewayInfoData, GetGatewayPodsData, GetInstrumentationRulesData, GetK8sManifestData, GetK8sManifestVars, GetMetricsData, GetNamespacesWithWorkloadsData, GetNodeCollectorInfoData, GetNodeCollectorPodsData, GetPeerSourcesVars, GetProfilingSlotsData, GetRecommendationsData, GetSamplingRulesData, GetServiceMapData, GetSourceLibrariesData, GetSourceLibrariesVars, GetSourceProfilingData, GetTokensData, GetWorkloadsByIdsData, GetWorkloadsByIdsVars, GetWorkloadsData, GetWorkloadsVars, GetInsightsTransactionsVars, GetInsightsTransactionVars, GetInsightsBaselineVars, GetInsightsObservationsVars, GetInsightsObservationVars, GetInsightsFindingsVars, GetInsightsAnomaliesVars, GetInsightsAnomalyVars, GetInsightsGuardrailViolationsVars, GetInsightsGuardrailViolationVars, GetInsightsServiceProfileVars, GetInsightsBlastRadiusVars, PromoteInsightsBaselineClassVars, ResetInsightsBaselineClassVars, ResetInsightsTransactionBaselinesVars, ForcePromoteInsightsServiceVars, DeleteInsightsTransactionVars, UpsertInsightsPolicyVars, DeleteInsightsPolicyVars, UpsertInsightsLearningPolicyVars, DeleteInsightsLearningPolicyVars, ResolveInsightsAnomalyVars, BulkResolveInsightsAnomaliesVars, UpsertInsightsGuardrailVars, DeleteInsightsGuardrailVars, SeedInsightsGuardrailVars, InsightsViolationActionVars, UpdateInsightsSystemSettingsVars, MultiFetchGroup, MultiFetchResponse, MultiFetchResult, OdigosApiOperations, OdigosApiProviderProps, Operation, OperationContext, PersistNamespacesResult, PersistNamespacesVars, PersistSourcesResult, PersistSourcesVars, RecoverFromRollbackVars, ResetLocalUiConfigResult, RestartPodVars, RestartWorkloadsVars, SamplingConfigInputWire, SamplingK8sHealthConfigInput, SamplingK8sHealthConfigVars, SamplingRuleCreateVars, SamplingRuleDeleteVars, SamplingRuleUpdateVars, SetRecommendationDismissedResult, TestDestinationConnectionVars, UpdateActionResult, UpdateActionVars, UpdateCostReductionRuleResult, UpdateDataStreamResult, UpdateDataStreamVars, UpdateDestinationData, UpdateDestinationVars, UpdateHighlyRelevantOperationRuleResult, UpdateInstrumentationRuleResult, UpdateInstrumentationRuleVars, UpdateLocalUiConfigResult, UpdateLocalUiConfigVars, UpdateLocalUiSamplingConfigResult, UpdateLocalUiSamplingConfigVars, UpdateNoisyOperationRuleResult, UpdateRemoteConfigResult, UpdateRemoteConfigVars, UpdateSourceVars, UpdateTokenResult, UpdateTokenVars, } from './types';
18
+ export type { ApolloConfig, ApplyRecommendationRemediationResult, ApplyRecommendationRemediationVars, CreateActionResult, CreateActionVars, CreateCostReductionRuleResult, CreateDataStreamResult, CreateDataStreamVars, CreateDestinationResult, CreateDestinationVars, CreateHighlyRelevantOperationRuleResult, CreateInstrumentationRuleResult, CreateInstrumentationRuleVars, CreateNoisyOperationRuleResult, DeleteActionResult, DeleteActionVars, DeleteCostReductionRuleResult, DeleteDataStreamResult, DeleteDataStreamVars, DeleteDestinationResult, DeleteDestinationVars, DeleteHighlyRelevantOperationRuleResult, DeleteInstrumentationRuleResult, DeleteInstrumentationRuleVars, DeleteNoisyOperationRuleResult, DescribeOdigosData, DescribeSourceData, DestinationWireInput, DiagnoseResult, DiagnoseVars, GetActionsData, GetAllClusterSnapshotsData, GetClusterSnapshotData, GetClusterSnapshotVars, GetCollectorPodInfoData, GetCollectorPodInfoVars, GetConfigYamlsData, GetDataStreamsData, GetDestinationsData, GetEffectiveConfigVars, GetGatewayInfoData, GetGatewayPodsData, GetInstrumentationInstructionsData, GetInstrumentationInstructionsVars, GetInstrumentationRulesData, GetK8sManifestData, GetK8sManifestVars, GetMetricsData, GetNamespacesWithWorkloadsData, GetNodeCollectorInfoData, GetNodeCollectorPodsData, GetPeerSourcesVars, GetProfilingSlotsData, GetRecommendationsData, GetSamplingRulesData, GetServiceMapData, GetSourceLibrariesData, GetSourceLibrariesVars, GetSourceProfilingData, GetTokensData, GetWorkloadsByIdsData, GetWorkloadsByIdsVars, GetWorkloadsData, GetWorkloadsVars, GetInsightsTransactionsVars, GetInsightsTransactionVars, GetInsightsBaselineVars, GetInsightsObservationsVars, GetInsightsObservationVars, GetInsightsFindingsVars, GetInsightsAnomaliesVars, GetInsightsAnomalyVars, GetInsightsGuardrailViolationsVars, GetInsightsGuardrailViolationVars, GetInsightsServiceProfileVars, GetInsightsBlastRadiusVars, PromoteInsightsBaselineClassVars, ResetInsightsBaselineClassVars, ResetInsightsTransactionBaselinesVars, ForcePromoteInsightsServiceVars, EnableInsightsTransactionGuardrailVars, DisableInsightsTransactionGuardrailVars, DeleteInsightsTransactionVars, UpsertInsightsPolicyVars, DeleteInsightsPolicyVars, UpsertInsightsLearningPolicyVars, DeleteInsightsLearningPolicyVars, ResolveInsightsAnomalyVars, BulkResolveInsightsAnomaliesVars, UpsertInsightsGuardrailVars, DeleteInsightsGuardrailVars, SeedInsightsGuardrailVars, InsightsViolationActionVars, UpdateInsightsSystemSettingsVars, MultiFetchGroup, MultiFetchResponse, MultiFetchResult, OdigosApiOperations, OdigosApiProviderProps, Operation, OperationContext, PersistNamespacesResult, PersistNamespacesVars, PersistSourcesResult, PersistSourcesVars, RecoverFromRollbackVars, ResetLocalUiConfigResult, RestartPodVars, RestartWorkloadsVars, SamplingConfigInputWire, SamplingK8sHealthConfigInput, SamplingK8sHealthConfigVars, SamplingRuleCreateVars, SamplingRuleDeleteVars, SamplingRuleUpdateVars, SetRecommendationDismissedResult, TestDestinationConnectionVars, UpdateActionResult, UpdateActionVars, UpdateCostReductionRuleResult, UpdateDataStreamResult, UpdateDataStreamVars, UpdateDestinationData, UpdateDestinationVars, UpdateHighlyRelevantOperationRuleResult, UpdateInstrumentationRuleResult, UpdateInstrumentationRuleVars, UpdateLocalUiConfigResult, UpdateLocalUiConfigVars, UpdateLocalUiSamplingConfigResult, UpdateLocalUiSamplingConfigVars, UpdateNoisyOperationRuleResult, UpdateRemoteConfigResult, UpdateRemoteConfigVars, UpdateSourceVars, UpdateTokenResult, UpdateTokenVars, } from './types';
19
19
  export type { Capabilities } from './capabilities';
20
20
  export type { ConfigApi } from './hooks/use-config-api';
21
21
  export type { TokensApi } from './hooks/use-tokens-api';
@@ -18,7 +18,7 @@ import type { ReactNode } from 'react';
18
18
  import type { DocumentNode } from '@apollo/client';
19
19
  import type { InstrumentationRuleInputWire } from '../../functions/instrumentation-rule-source-scopes';
20
20
  import type { ApolloClient, ApolloLink, FetchPolicy, MutationFetchPolicy, TypePolicies, WatchQueryFetchPolicy } from '@apollo/client';
21
- import type { Action, ActionFormData, AllClusterSnapshots, ClusterSnapshot, ConfigYaml, CostReductionRule, CostReductionRuleInput, DataStream, DescribeOdigos, DescribeSource, Destination, DestinationFormData, DiagnoseFormData, EffectiveConfig, EffectiveConfigInput, EnableProfilingResult, ExtendedPodInfo, FetchedConfig, GatewayInfo, GetActionTypesResult, GetInstrumentationRuleTypesResult, GetDestinationCategoriesResult, GetPotentialDestinationsResult, GetProfileHotFunctionsVars, HighlyRelevantOperationRule, HighlyRelevantOperationRuleInput, HotFunctionsResult, InsightsAnomalyIssue, InsightsAnomalyRefInput, InsightsAnomalyResolution, InsightsAnomalySummary, InsightsBaselineClass, InsightsBulkResolution, InsightsBulkResolveResult, InsightsCatalog, InsightsDeviationClass, InsightsFinding, InsightsFindingKind, InsightsGuardrail, InsightsGuardrailInput, InsightsGuardrailSeedInput, InsightsGuardrailViolation, InsightsGuardrailViolationDetail, InsightsLearningPolicy, InsightsLearningPolicyInput, InsightsObservation, InsightsObservationSummary, InsightsPolicy, InsightsPolicyInput, InsightsPolicyScope, InsightsPromoteResult, InsightsSampleReason, InsightsServiceStat, InsightsServiceProfile, InsightsBlastRadiusSubgraph, InsightsStorageHealth, InsightsSystemSettings, InsightsSystemSettingsInput, InsightsTransaction, InsightsTransactionKind, InsightsTransactionStat, InsightsViolationActionInput, InstrumentationRule, K8sResourceKind, LocalUiConfigInput, Metrics, Namespace, NoisyOperationRule, NoisyOperationRuleInput, NodeCollectoInfo, PlatformType, PodInfo, ProfilingSlots, SourceProfilingVars, Recommendation, RecommendationRemediationType, RecommendationType, SamplingRules, SamplingRulesK8sHealthConfig, ServiceMapSources, SourceFormData, SourceProfilingResult, TestConnectionResponse, Tier, TokenPayload, Workload, WorkloadId, PeerSources } from '../../types';
21
+ import type { Action, ActionFormData, AllClusterSnapshots, ClusterSnapshot, ConfigYaml, CostReductionRule, CostReductionRuleInput, DataStream, DescribeOdigos, DescribeSource, Destination, DestinationFormData, DiagnoseFormData, EffectiveConfig, EffectiveConfigInput, EnableProfilingResult, ExtendedPodInfo, FetchedConfig, GatewayInfo, GetActionTypesResult, GetInstrumentationRuleTypesResult, GetDestinationCategoriesResult, GetPotentialDestinationsResult, GetProfileHotFunctionsVars, HighlyRelevantOperationRule, HighlyRelevantOperationRuleInput, HotFunctionsResult, InsightsAnomalyIssue, InsightsAnomalyRefInput, InsightsAnomalyResolution, InsightsAnomalySummary, InsightsBaselineClass, InsightsBulkResolution, InsightsBulkResolveResult, InsightsCatalog, InsightsDeviationClass, InsightsFinding, InsightsFindingKind, InsightsGuardrail, InsightsGuardrailInput, InsightsGuardrailSeedInput, InsightsGuardrailViolation, InsightsGuardrailViolationDetail, InsightsLearningPolicy, InsightsLearningPolicyInput, InsightsObservation, InsightsObservationSummary, InsightsPolicy, InsightsPolicyInput, InsightsPolicyScope, InsightsPromoteResult, InsightsSampleReason, InsightsServiceStat, InsightsServiceProfile, InsightsBlastRadiusSubgraph, InsightsStorageHealth, InsightsSystemSettings, InsightsSystemSettingsInput, InsightsTransaction, InsightsTransactionKind, InsightsTransactionStat, InsightsViolationActionInput, InstrumentationInstructions, InstrumentationRule, K8sResourceKind, LocalUiConfigInput, Metrics, Namespace, NoisyOperationRule, NoisyOperationRuleInput, NodeCollectoInfo, PlatformType, PodInfo, ProfilingSlots, SourceProfilingVars, Recommendation, RecommendationRemediationType, RecommendationType, SamplingRules, SamplingRulesK8sHealthConfig, ServiceMapSources, SourceFormData, SourceProfilingResult, TestConnectionResponse, Tier, TokenPayload, Workload, WorkloadId, PeerSources } from '../../types';
22
22
  /**
23
23
  * The execution context for a given operation, propagated through every
24
24
  * `Operation.document(ctx)` / `transformVariables(vars, ctx)` /
@@ -257,6 +257,19 @@ export interface GetSourceLibrariesData {
257
257
  }[];
258
258
  }[];
259
259
  }
260
+ /** Variables for `GET_INSTRUMENTATION_INSTRUCTIONS` — the same composite id the workload is keyed by. */
261
+ export type GetInstrumentationInstructionsVars = WorkloadId;
262
+ /**
263
+ * Result envelope for `GET_INSTRUMENTATION_INSTRUCTIONS`.
264
+ *
265
+ * Null is a normal answer, not an error: the workload's type may have no instrumentation defined on
266
+ * this connector at all. The drawer renders nothing in that case — the report already explains why
267
+ * the workload is not instrumented, and an empty "how to instrument it" panel would compete with
268
+ * that explanation.
269
+ */
270
+ export interface GetInstrumentationInstructionsData {
271
+ instrumentationInstructions?: InstrumentationInstructions | null;
272
+ }
260
273
  /** Variables for the peer-sources query (used by service map). */
261
274
  export interface GetPeerSourcesVars {
262
275
  serviceName: string;
@@ -675,6 +688,8 @@ export interface ForcePromoteInsightsServiceVars {
675
688
  namespace: string;
676
689
  service: string;
677
690
  }
691
+ export type EnableInsightsTransactionGuardrailVars = ForcePromoteInsightsServiceVars;
692
+ export type DisableInsightsTransactionGuardrailVars = ForcePromoteInsightsServiceVars;
678
693
  export interface DeleteInsightsTransactionVars {
679
694
  transactionId: string;
680
695
  }
@@ -870,6 +885,12 @@ export interface OdigosApiOperations {
870
885
  source?: Workload;
871
886
  }, WorkloadId>;
872
887
  GET_SOURCE_LIBRARIES: Operation<GetSourceLibrariesData, GetSourceLibrariesVars>;
888
+ /**
889
+ * Optional: only cloud-connector hosts serve it. K8s instruments workloads itself and has
890
+ * nothing to instruct a customer to do, so the slot is absent there and the drawer section
891
+ * simply does not render (`useApiQuery` reports `unsupported` and never fires).
892
+ */
893
+ GET_INSTRUMENTATION_INSTRUCTIONS?: Operation<GetInstrumentationInstructionsData, GetInstrumentationInstructionsVars>;
873
894
  GET_PEER_SOURCES: Operation<{
874
895
  peerSources?: PeerSources;
875
896
  }, GetPeerSourcesVars>;
@@ -976,6 +997,8 @@ export interface OdigosApiOperations {
976
997
  RESET_INSIGHTS_BASELINE_CLASS?: Operation<boolean, ResetInsightsBaselineClassVars>;
977
998
  RESET_INSIGHTS_TRANSACTION_BASELINES?: Operation<boolean, ResetInsightsTransactionBaselinesVars>;
978
999
  FORCE_PROMOTE_INSIGHTS_SERVICE?: Operation<boolean, ForcePromoteInsightsServiceVars>;
1000
+ ENABLE_INSIGHTS_TRANSACTION_GUARDRAIL?: Operation<boolean, EnableInsightsTransactionGuardrailVars>;
1001
+ DISABLE_INSIGHTS_TRANSACTION_GUARDRAIL?: Operation<boolean, DisableInsightsTransactionGuardrailVars>;
979
1002
  DELETE_INSIGHTS_TRANSACTION?: Operation<boolean, DeleteInsightsTransactionVars>;
980
1003
  UPSERT_INSIGHTS_POLICY?: Operation<InsightsPolicy, UpsertInsightsPolicyVars>;
981
1004
  DELETE_INSIGHTS_POLICY?: Operation<boolean, DeleteInsightsPolicyVars>;
package/lib/contexts.js CHANGED
@@ -1 +1 @@
1
- import{u as a,r as x,a as y}from"./chunks/source-instrument-form-context-Bg6JzU76.js";export{A as ActionFormContextProvider,C as CloudConnectorFormContextProvider,D as DataStreamFormContextProvider,b as DestinationFormContextProvider,O as OdigosApiConnectionsScope,c as OdigosApiProvider,R as RuleFormContextProvider,S as SamplingRuleFormType,d as SamplingRulesFormProvider,e as SourceEditFormContextProvider,f as SourceInstrumentFormContextProvider,p as prepareNamespacePayloads,g as prepareSourcePayloads,h as useActionFormContext,i as useApiLazyQuery,j as useApiMutation,k as useApiQuery,l as useCloudConnectorFormContext,m as useDataStreamFormContext,n as useDestinationFormContext,o as useOdigosApi,q as useRuleFormContext,s as useSamplingRulesFormContext,t as useSourceEditFormContext,v as useSourceInstrumentFormContext}from"./chunks/source-instrument-form-context-Bg6JzU76.js";export{O as OdigosProvider,c as checkVersionSupport,r as resolveMinSupportedVersion,u as useOdigos}from"./chunks/helpers-CtkwQ3Wc.js";import{jsx as F}from"react/jsx-runtime";import{useMemo as P,useContext as E,createContext as T}from"react";import{P as I,t as _}from"./chunks/ui-components-CjgsN17j.js";import{useApolloClient as w}from"@apollo/client/react";import"@apollo/client/link/error";import"@apollo/client/link/context";import"@apollo/client/utilities";import"@apollo/client/errors";import"@apollo/client";import"styled-components";import"./icons.js";import"zustand";import"javascript-time-ago";import"javascript-time-ago/locale/en";import"react-dom";import"prism-react-renderer";import"zustand/middleware";import"react-error-boundary";import"virtua";const M=()=>{const o=w(),{operations:r,context:e}=a();return{multiFetch:async(t,s,n)=>{const i=r[t];return i?y(o,i,s,n,e):{results:[],allSucceeded:!1,anySucceeded:!1,successCount:0,failureCount:s.length,error:`Operation ${String(t)} not configured`}},bulkPersistSources:async(t,s)=>{const n=[];for(const i of t){const t={...e,proxyID:i},{error:a}=await x(o,r.PERSIST_SOURCES,s,t);a&&n.push(`${i}: ${a}`)}return n.length?{error:n.join(", ")}:void 0},applyConfigurations:async(t,s)=>{if(!r.UPDATE_REMOTE_CONFIG)return{error:"UPDATE_REMOTE_CONFIG not configured"};if(!t.length)return{error:"No connections selected"};const n={formData:s,connectionIds:t},i=r.UPDATE_REMOTE_CONFIG;let a;return 1===t.length?({error:a}=await x(o,i,n,e)):({error:a}=await y(o,i,t,n,e)),a?{error:a}:void 0}}},N=(o,r)=>o.platformType===I.K8s?r.K8s:[I.Vm,I.Connector,I.AwsEcs].includes(o.platformType)?r.Vm:void 0,V=o=>r=>{const e=o[r.platformType];if(!e)return;const t=Object.keys(e);if(0===t.length)return;const s=_(r.schemaVersion??r.version),n=[...t].sort((o,r)=>_(r)-_(o)).find(o=>s>=_(o));return n?e[n]:void 0},U=(o,r)=>{const e={};for(const t of Object.keys(o))e[t]=r(o[t]);return e},z=T({formType:void 0}),G=({children:o,formType:r})=>{const e=P(()=>({formType:r}),[r]);return F(z.Provider,{value:e,children:o})},$=()=>E(z);export{G as StorybookProvider,N as pickByPlatform,M as useApiForConnections,$ as useStorybook,V as versionedDocument,U as vmDialectMap};
1
+ import{u as a,r as x,a as y}from"./chunks/source-instrument-form-context-D6pVu22G.js";export{A as ActionFormContextProvider,C as CloudConnectorFormContextProvider,D as DataStreamFormContextProvider,b as DestinationFormContextProvider,O as OdigosApiConnectionsScope,c as OdigosApiProvider,R as RuleFormContextProvider,S as SamplingRuleFormType,d as SamplingRulesFormProvider,e as SourceEditFormContextProvider,f as SourceInstrumentFormContextProvider,p as prepareNamespacePayloads,g as prepareSourcePayloads,h as useActionFormContext,i as useApiLazyQuery,j as useApiMutation,k as useApiQuery,l as useCloudConnectorFormContext,m as useDataStreamFormContext,n as useDestinationFormContext,o as useOdigosApi,q as useRuleFormContext,s as useSamplingRulesFormContext,t as useSourceEditFormContext,v as useSourceInstrumentFormContext}from"./chunks/source-instrument-form-context-D6pVu22G.js";export{O as OdigosProvider,c as checkVersionSupport,r as resolveMinSupportedVersion,u as useOdigos}from"./chunks/helpers-BCSEuuKh.js";import{jsx as F}from"react/jsx-runtime";import{useMemo as P,useContext as E,createContext as T}from"react";import{P as I,t as _}from"./chunks/ui-components-D8rTJS7r.js";import{useApolloClient as w}from"@apollo/client/react";import"@apollo/client/link/error";import"@apollo/client/link/context";import"@apollo/client/utilities";import"@apollo/client/errors";import"@apollo/client";import"styled-components";import"./icons.js";import"zustand";import"javascript-time-ago";import"javascript-time-ago/locale/en";import"react-dom";import"prism-react-renderer";import"zustand/middleware";import"react-error-boundary";import"virtua";const M=()=>{const o=w(),{operations:r,context:e}=a();return{multiFetch:async(t,s,n)=>{const i=r[t];return i?y(o,i,s,n,e):{results:[],allSucceeded:!1,anySucceeded:!1,successCount:0,failureCount:s.length,error:`Operation ${String(t)} not configured`}},bulkPersistSources:async(t,s)=>{const n=[];for(const i of t){const t={...e,proxyID:i},{error:a}=await x(o,r.PERSIST_SOURCES,s,t);a&&n.push(`${i}: ${a}`)}return n.length?{error:n.join(", ")}:void 0},applyConfigurations:async(t,s)=>{if(!r.UPDATE_REMOTE_CONFIG)return{error:"UPDATE_REMOTE_CONFIG not configured"};if(!t.length)return{error:"No connections selected"};const n={formData:s,connectionIds:t},i=r.UPDATE_REMOTE_CONFIG;let a;return 1===t.length?({error:a}=await x(o,i,n,e)):({error:a}=await y(o,i,t,n,e)),a?{error:a}:void 0}}},N=(o,r)=>o.platformType===I.K8s?r.K8s:[I.Vm,I.Connector,I.AwsEcs].includes(o.platformType)?r.Vm:void 0,V=o=>r=>{const e=o[r.platformType];if(!e)return;const t=Object.keys(e);if(0===t.length)return;const s=_(r.schemaVersion??r.version),n=[...t].sort((o,r)=>_(r)-_(o)).find(o=>s>=_(o));return n?e[n]:void 0},U=(o,r)=>{const e={};for(const t of Object.keys(o))e[t]=r(o[t]);return e},z=T({formType:void 0}),G=({children:o,formType:r})=>{const e=P(()=>({formType:r}),[r]);return F(z.Provider,{value:e,children:o})},$=()=>E(z);export{G as StorybookProvider,N as pickByPlatform,M as useApiForConnections,$ as useStorybook,V as versionedDocument,U as vmDialectMap};
package/lib/functions.js CHANGED
@@ -1 +1 @@
1
- export{bu as adaptInstrumentationRuleFromWire,bs as adaptInstrumentationRuleInputForWire,cr as buildBadgeForDesiredStatus,hM as buildCatalogFieldsDataCard,ch as buildCatalogFieldsSegments,hN as capitalizeFirstLetter,hO as cleanObjectEmptyStringsValues,a9 as compareCondition,hP as decimalsOnly,b3 as deepClone,gz as entityIdKey,gE as filterActions,gD as filterDestinations,cl as filterDestinationsByStream,gC as filterSources,gp as filterSourcesByStream,hQ as flattenObjectKeys,cG as formatBytes,g8 as formatDuration,b9 as generateId,gw as getActionConditions,cj as getActionIcon,gx as getConditionsBooleans,cZ as getContainersIcons,hR as getContainersInstrumentedCount,hS as getDeepValue,c9 as getDestinationIcon,hT as getDetectedLanguageIcons,cw as getEffectiveLanguage,cO as getEffectiveRuntimeVersion,gA as getEntityIcon,bn as getEntityId,gv as getEntityIdKey,gy as getEntityLabel,hU as getHealthBadgeLabel,bj as getIdFromSseTarget,cn as getInstrumentationRuleIcon,hV as getMainContainerLanguage,hW as getMetricForEntity,hX as getMonitorIcon,hY as getNearestTypographySize,cY as getPlatformIcon,fY as getPlatformLabel,$ as getProgrammingLanguageIcon,hZ as getRecursiveValues,cF as getSourceKindLabel,cC as getSourceLanguageIcons,bc as getSseTargetFromId,cM as getStatusColor,gG as getStatusFromPodStatus,cN as getStatusIcon,cH as getStatusTypeFromOdigosHealth,h_ as getValueForRange,cB as getVirtualServiceIcon,cA as getWorkloadId,cm as getYamlFieldsForDestination,h$ as hasUnhealthyInstances,i0 as instrumentationRuleSourceScopesFromWire,i1 as instrumentationRuleSourceScopesToWire,bz as isEmpty,bA as isLegalK8sLabel,eJ as isOverTime,i2 as isStringABoolean,i3 as isTimeElapsed,cL as isValidVersion,i4 as mapConditions,ct as mapDesiredStatusToConditionStatus,cf as mapDesiredStatusesToConditions,ck as mapDestinationFieldsForDisplay,bE as mapExportedSignals,bC as mapSupportedSignals,i5 as numbersOnly,i6 as parseBooleanFromString,i7 as parseJsonStringToPrettyString,ga as parseRawOtlp,bT as prepareDestinationFormData,i8 as removeEmptyValuesFromObject,E as safeJsonParse,i9 as safeJsonStringify,ia as setDeepValue,ib as sleep,an as splitCamelString,ic as stringifyNonStringValues,t as trimVersion}from"./chunks/ui-components-CjgsN17j.js";import"react/jsx-runtime";import"styled-components";import"./icons.js";import"zustand";import"react";import"javascript-time-ago";import"javascript-time-ago/locale/en";import"react-dom";import"prism-react-renderer";import"zustand/middleware";import"react-error-boundary";import"virtua";
1
+ export{bu as adaptInstrumentationRuleFromWire,bs as adaptInstrumentationRuleInputForWire,cr as buildBadgeForDesiredStatus,hM as buildCatalogFieldsDataCard,ch as buildCatalogFieldsSegments,hN as capitalizeFirstLetter,hO as cleanObjectEmptyStringsValues,aa as compareCondition,hP as decimalsOnly,b4 as deepClone,gz as entityIdKey,gE as filterActions,gD as filterDestinations,cl as filterDestinationsByStream,gC as filterSources,gp as filterSourcesByStream,hQ as flattenObjectKeys,cG as formatBytes,g9 as formatDuration,b9 as generateId,gw as getActionConditions,cj as getActionIcon,gx as getConditionsBooleans,cZ as getContainersIcons,hR as getContainersInstrumentedCount,hS as getDeepValue,c9 as getDestinationIcon,hT as getDetectedLanguageIcons,cw as getEffectiveLanguage,cO as getEffectiveRuntimeVersion,gA as getEntityIcon,bn as getEntityId,gv as getEntityIdKey,gy as getEntityLabel,hU as getHealthBadgeLabel,bj as getIdFromSseTarget,cn as getInstrumentationRuleIcon,hV as getMainContainerLanguage,hW as getMetricForEntity,hX as getMonitorIcon,hY as getNearestTypographySize,cY as getPlatformIcon,fY as getPlatformLabel,a0 as getProgrammingLanguageIcon,hZ as getRecursiveValues,cF as getSourceKindLabel,cC as getSourceLanguageIcons,bc as getSseTargetFromId,cM as getStatusColor,gG as getStatusFromPodStatus,cN as getStatusIcon,cH as getStatusTypeFromOdigosHealth,h_ as getValueForRange,cB as getVirtualServiceIcon,cA as getWorkloadId,cm as getYamlFieldsForDestination,h$ as hasUnhealthyInstances,i0 as instrumentationRuleSourceScopesFromWire,i1 as instrumentationRuleSourceScopesToWire,bz as isEmpty,bA as isLegalK8sLabel,eJ as isOverTime,i2 as isStringABoolean,i3 as isTimeElapsed,cL as isValidVersion,i4 as mapConditions,ct as mapDesiredStatusToConditionStatus,cf as mapDesiredStatusesToConditions,ck as mapDestinationFieldsForDisplay,bE as mapExportedSignals,bC as mapSupportedSignals,i5 as numbersOnly,i6 as parseBooleanFromString,i7 as parseJsonStringToPrettyString,gb as parseRawOtlp,bT as prepareDestinationFormData,i8 as removeEmptyValuesFromObject,G as safeJsonParse,i9 as safeJsonStringify,ia as setDeepValue,ib as sleep,ao as splitCamelString,ic as stringifyNonStringValues,t as trimVersion}from"./chunks/ui-components-D8rTJS7r.js";import"react/jsx-runtime";import"styled-components";import"./icons.js";import"zustand";import"react";import"javascript-time-ago";import"javascript-time-ago/locale/en";import"react-dom";import"prism-react-renderer";import"zustand/middleware";import"react-error-boundary";import"virtua";
package/lib/hooks.js CHANGED
@@ -1 +1 @@
1
- export{iE as IGNORE_OUTSIDE_CLICK_ATTR,eL as PopupAlignX,eK as PopupAlignY,gc as formatDurationMinutes,iF as formatDurationMs,iG as isInsideIgnoredPortal,iH as useActionFormData,iI as useAnchoredPopup,iJ as useBodyScroll,gB as useContainerSize,u as useCopy,iK as useDataStreamFormData,iL as useDestinationFormData,bv as useGenericForm,iM as useInstrumentationRuleFormData,eI as useKeyDown,cI as useOnClickOutside,iN as useOverflow,iO as usePopup,cq as useScrollIntoViewWhen,gY as useScrollTo,gs as useSessionStorage,iP as useSourceFormData,co as useTimeAgo}from"./chunks/ui-components-CjgsN17j.js";import"react/jsx-runtime";import"styled-components";import"./icons.js";import"zustand";import"react";import"javascript-time-ago";import"javascript-time-ago/locale/en";import"react-dom";import"prism-react-renderer";import"zustand/middleware";import"react-error-boundary";import"virtua";
1
+ export{iE as IGNORE_OUTSIDE_CLICK_ATTR,eL as PopupAlignX,eK as PopupAlignY,gd as formatDurationMinutes,iF as formatDurationMs,iG as isInsideIgnoredPortal,iH as useActionFormData,iI as useAnchoredPopup,iJ as useBodyScroll,gB as useContainerSize,u as useCopy,iK as useDataStreamFormData,iL as useDestinationFormData,bv as useGenericForm,iM as useInstrumentationRuleFormData,eI as useKeyDown,cI as useOnClickOutside,iN as useOverflow,iO as usePopup,cq as useScrollIntoViewWhen,gY as useScrollTo,gs as useSessionStorage,iP as useSourceFormData,co as useTimeAgo}from"./chunks/ui-components-D8rTJS7r.js";import"react/jsx-runtime";import"styled-components";import"./icons.js";import"zustand";import"react";import"javascript-time-ago";import"javascript-time-ago/locale/en";import"react-dom";import"prism-react-renderer";import"zustand/middleware";import"react-error-boundary";import"virtua";
@@ -1,19 +1,20 @@
1
1
  import { type Edge } from '@xyflow/react';
2
2
  import type { DefaultTheme } from 'styled-components';
3
3
  import { type BlastRadiusEdgeData, type BlastRadiusServiceNode } from './types';
4
- import type { InsightsBlastRadiusNode, InsightsBlastRadiusSubgraph } from '../../../../../../types';
4
+ import type { InsightsBlastRadiusNode, InsightsBlastRadiusSubgraph } from '../../types';
5
5
  export declare const NODE_WIDTH = 120;
6
6
  export declare const NODE_HEIGHT = 58;
7
7
  /** Stable React Flow id — namespace may be empty for virtual hubs like `user`. */
8
8
  export declare const getBlastRadiusNodeId: (namespace: string | undefined | null, service: string) => string;
9
9
  export declare const getBlastRadiusNodeIdFromNode: (node: Pick<InsightsBlastRadiusNode, "namespace" | "service">) => string;
10
10
  /**
11
- * Attacker: non-root node with both inbound and outbound edges (two-way traffic).
12
- * Prefer a node that is reciprocal with the root when several qualify.
11
+ * Attacker is the synthetic ingress hub named `user` (empty namespace), not
12
+ * inferred from traffic degrees.
13
13
  */
14
- export declare const findAttackerNodeId: (rootId: string, edges: Array<{
15
- source: string;
16
- target: string;
14
+ export declare const ATTACKER_SERVICE_NAME = "user";
15
+ export declare const findAttackerNodeId: (rootId: string, nodes: Array<{
16
+ id: string;
17
+ service: string;
17
18
  }>) => string | null;
18
19
  export declare const buildBlastRadiusNodes: (subgraph: InsightsBlastRadiusSubgraph, attackerId: string | null) => BlastRadiusServiceNode[];
19
20
  export declare const buildBlastRadiusEdges: (subgraph: InsightsBlastRadiusSubgraph, theme: DefaultTheme, nodeIds: Set<string>, attackerId: string | null) => Edge<BlastRadiusEdgeData>[];
@@ -0,0 +1,7 @@
1
+ import { type FC } from 'react';
2
+ import '@xyflow/react/dist/style.css';
3
+ import type { InsightsBlastRadiusSubgraph } from '../../types';
4
+ export interface BlastRadiusProps {
5
+ blastRadius?: InsightsBlastRadiusSubgraph;
6
+ }
7
+ export declare const BlastRadius: FC<BlastRadiusProps>;
@@ -1,5 +1,6 @@
1
1
  export * from './actions';
2
2
  export * from './animated-collapse';
3
+ export * from './blast-radius';
3
4
  export * from './cancel-modal';
4
5
  export * from './code-modal';
5
6
  export * from './colored-span';
package/lib/snippets.js CHANGED
@@ -1 +1 @@
1
- export{A as ActionType,a as Actions,R as RichTitle}from"./chunks/ui-components-CjgsN17j.js";export{A as AnimatedCollapse,C as CancelModal,a as CodeModal,b as ConnectorCreatedModal,D as DURATION_OPTIONS,c as DeleteModal,d as DurationErrorsSection,e as DynamicActionFields,f as DynamicField,g as DynamicFields,E as EnableDisableSegment,I as InstrumentationPreviewSection,N as NOISY_PERCENTAGE_OPTIONS,O as OdigosLogoTextByTier,h as OperationSection,P as PERCENTAGE_OPTIONS,i as PercentageSection,j as PresetWithCustomInput,R as RuleInfoSection,k as RuleTypeSection,S as SamplingPreviewSection,l as SignalsCheckboxList,m as SourceScopeSection,U as UpgradeModal,W as WIDE_DRAWER_WIDTH,n as WideDrawer,Y as YamlSectionCard}from"./chunks/index-BlYPxLja.js";export{C as ColoredSpan,a as ColoredSpanVariant}from"./chunks/helpers-CtkwQ3Wc.js";import"react/jsx-runtime";import"styled-components";import"./icons.js";import"zustand";import"react";import"javascript-time-ago";import"javascript-time-ago/locale/en";import"react-dom";import"prism-react-renderer";import"zustand/middleware";import"react-error-boundary";import"virtua";
1
+ export{A as ActionType,a as Actions,R as RichTitle}from"./chunks/ui-components-D8rTJS7r.js";export{A as AnimatedCollapse,B as BlastRadius,C as CancelModal,a as CodeModal,b as ConnectorCreatedModal,D as DURATION_OPTIONS,c as DeleteModal,d as DurationErrorsSection,e as DynamicActionFields,f as DynamicField,g as DynamicFields,E as EnableDisableSegment,I as InstrumentationPreviewSection,N as NOISY_PERCENTAGE_OPTIONS,O as OdigosLogoTextByTier,h as OperationSection,P as PERCENTAGE_OPTIONS,i as PercentageSection,j as PresetWithCustomInput,R as RuleInfoSection,k as RuleTypeSection,S as SamplingPreviewSection,l as SignalsCheckboxList,m as SourceScopeSection,U as UpgradeModal,W as WIDE_DRAWER_WIDTH,n as WideDrawer,Y as YamlSectionCard}from"./chunks/index-Cy84opXf.js";export{C as ColoredSpan,a as ColoredSpanVariant}from"./chunks/helpers-BCSEuuKh.js";import"react/jsx-runtime";import"styled-components";import"./icons.js";import"zustand";import"react";import"javascript-time-ago";import"javascript-time-ago/locale/en";import"react-dom";import"prism-react-renderer";import"zustand/middleware";import"react-error-boundary";import"virtua";import"@xyflow/react/dist/style.css";import"@xyflow/react";
package/lib/store.js CHANGED
@@ -1 +1 @@
1
- export{eM as DrawerType,bi as ProgressKeys,gt as getDrawerTypeForAdd,cE as getDrawerTypeForEdit,iD as useDarkMode,bf as useDataStreamStore,cz as useDrawerStore,go as useFilterStore,ba as useNotificationStore,bg as useProgressStore,gu as useSelectedStore,bh as useSetupStore}from"./chunks/ui-components-CjgsN17j.js";import"react/jsx-runtime";import"styled-components";import"./icons.js";import"zustand";import"react";import"javascript-time-ago";import"javascript-time-ago/locale/en";import"react-dom";import"prism-react-renderer";import"zustand/middleware";import"react-error-boundary";import"virtua";
1
+ export{eM as DrawerType,bi as ProgressKeys,gt as getDrawerTypeForAdd,cE as getDrawerTypeForEdit,iD as useDarkMode,bf as useDataStreamStore,cz as useDrawerStore,go as useFilterStore,ba as useNotificationStore,bg as useProgressStore,gu as useSelectedStore,bh as useSetupStore}from"./chunks/ui-components-D8rTJS7r.js";import"react/jsx-runtime";import"styled-components";import"./icons.js";import"zustand";import"react";import"javascript-time-ago";import"javascript-time-ago/locale/en";import"react-dom";import"prism-react-renderer";import"zustand/middleware";import"react-error-boundary";import"virtua";
package/lib/theme.js CHANGED
@@ -1 +1 @@
1
- export{iQ as Provider,iR as animations,iS as opacity,iT as palettes}from"./chunks/ui-components-CjgsN17j.js";import"react/jsx-runtime";import"styled-components";import"./icons.js";import"zustand";import"react";import"javascript-time-ago";import"javascript-time-ago/locale/en";import"react-dom";import"prism-react-renderer";import"zustand/middleware";import"react-error-boundary";import"virtua";
1
+ export{iQ as Provider,iR as animations,iS as opacity,iT as palettes}from"./chunks/ui-components-D8rTJS7r.js";import"react/jsx-runtime";import"styled-components";import"./icons.js";import"zustand";import"react";import"javascript-time-ago";import"javascript-time-ago/locale/en";import"react-dom";import"prism-react-renderer";import"zustand/middleware";import"react-error-boundary";import"virtua";
@@ -109,6 +109,7 @@ export interface InsightsServiceProfile {
109
109
  callers: string[];
110
110
  callees: string[];
111
111
  egress: string[];
112
+ transactions: string[];
112
113
  }
113
114
  export interface InsightsBlastRadiusNode {
114
115
  /** Empty for synthetic hubs (e.g. `user`) and some virtual leaves. */
@@ -424,7 +425,7 @@ export interface InsightsViolationActionInput {
424
425
  export interface InsightsGuardrailSeedInput {
425
426
  scopeKey: string;
426
427
  mode?: InsightsRuleMode | null;
427
- /** JSON-encoded map[string][]string; keys: allowed_callers | allowed_callees | allowed_egress. */
428
+ /** JSON-encoded map[string][]string; keys: allowed_callers | allowed_callees | allowed_egress | allowed_transactions. */
428
429
  items: string;
429
430
  }
430
431
  export interface InsightsCatalogClass {
@@ -488,10 +489,6 @@ export interface InsightsSystemSamplingSettings {
488
489
  export interface InsightsSystemRetentionSettings {
489
490
  observationRetentionDays: number;
490
491
  }
491
- export interface InsightsSystemFindingsSettings {
492
- defaultWindowHours: number;
493
- maxWindowHours: number;
494
- }
495
492
  export interface InsightsSystemCapacitySettings {
496
493
  maxResidentTransactions: number;
497
494
  maxBaselineSetMembers: number;
@@ -499,12 +496,16 @@ export interface InsightsSystemCapacitySettings {
499
496
  export interface InsightsSystemWritebackSettings {
500
497
  flushIntervalSeconds: number;
501
498
  }
499
+ export interface InsightsSystemDetectionSettings {
500
+ /** When true, auto-create an enforced allowed_transactions guardrail when a service finishes promoting. */
501
+ autoTransactionGuardrail: boolean;
502
+ }
502
503
  export interface InsightsSystemSettings {
503
504
  sampling: InsightsSystemSamplingSettings;
504
505
  retention: InsightsSystemRetentionSettings;
505
- findings: InsightsSystemFindingsSettings;
506
506
  capacity: InsightsSystemCapacitySettings;
507
507
  writeback: InsightsSystemWritebackSettings;
508
+ detection: InsightsSystemDetectionSettings;
508
509
  }
509
510
  export interface InsightsSystemSamplingSettingsInput {
510
511
  examplesPerTransaction: number;
@@ -513,10 +514,6 @@ export interface InsightsSystemSamplingSettingsInput {
513
514
  export interface InsightsSystemRetentionSettingsInput {
514
515
  observationRetentionDays: number;
515
516
  }
516
- export interface InsightsSystemFindingsSettingsInput {
517
- defaultWindowHours: number;
518
- maxWindowHours: number;
519
- }
520
517
  export interface InsightsSystemCapacitySettingsInput {
521
518
  maxResidentTransactions: number;
522
519
  maxBaselineSetMembers: number;
@@ -524,12 +521,15 @@ export interface InsightsSystemCapacitySettingsInput {
524
521
  export interface InsightsSystemWritebackSettingsInput {
525
522
  flushIntervalSeconds: number;
526
523
  }
524
+ export interface InsightsSystemDetectionSettingsInput {
525
+ autoTransactionGuardrail: boolean;
526
+ }
527
527
  export interface InsightsSystemSettingsInput {
528
528
  sampling: InsightsSystemSamplingSettingsInput;
529
529
  retention: InsightsSystemRetentionSettingsInput;
530
- findings: InsightsSystemFindingsSettingsInput;
531
530
  capacity: InsightsSystemCapacitySettingsInput;
532
531
  writeback: InsightsSystemWritebackSettingsInput;
532
+ detection: InsightsSystemDetectionSettingsInput;
533
533
  }
534
534
  export interface InsightsStorageConnection {
535
535
  reachable: boolean;
@@ -246,6 +246,20 @@ export interface InstrumentationReport {
246
246
  state: string;
247
247
  /** WorkloadReport.current.instrumented */
248
248
  instrumented?: boolean | null;
249
+ /**
250
+ * WorkloadReport.desired.mode — WHO instruments this workload: `automatic` (Odigos
251
+ * applies and repairs it) or `manual` (the customer applies it themselves, in their
252
+ * own IaC, and Odigos observes the result). Null when the workload's type is not
253
+ * enabled for instrumentation in any mode, so "not applicable" is distinguishable
254
+ * from either mode.
255
+ *
256
+ * It changes what a status MEANS rather than adding detail to it. An enabled,
257
+ * uninstrumented workload is Odigos still working on it in automatic mode and
258
+ * Odigos waiting for the CUSTOMER in manual mode — the same state with opposite
259
+ * implications for who has to act, so copy that ignores this tells half of all
260
+ * cloud-connector users the wrong thing.
261
+ */
262
+ mode?: string | null;
249
263
  /** WorkloadReport.desired.sdkType when advertised (e.g. "opentelemetry"). */
250
264
  sdkType?: string | null;
251
265
  progressStage?: string | null;
@@ -281,3 +295,50 @@ export interface InstrumentationReportIssue {
281
295
  since?: string | null;
282
296
  transient?: boolean | null;
283
297
  }
298
+ /**
299
+ * How to instrument one workload, as the connector rendered it.
300
+ *
301
+ * This is the other half of manual mode. `InstrumentationReport.mode === 'manual'` says the
302
+ * customer is the one who applies instrumentation; this says WHAT to apply, for the workload in
303
+ * front of them, with the endpoint / service name / region already filled in.
304
+ *
305
+ * Everything here is display-ready text. The kit deliberately knows nothing about the mechanics of
306
+ * the change — no environment-variable merge directions, no volumes, no sidecars, no layer ARNs.
307
+ * The connector computes the change from the same recipes it uses to JUDGE the workload
308
+ * afterwards, so anything the kit re-derived would be a second implementation, free to disagree
309
+ * with the one that decides whether the customer's deployment is reported as drifted.
310
+ */
311
+ export interface InstrumentationInstructions {
312
+ serviceName: string;
313
+ kind: string;
314
+ region?: string | null;
315
+ /** `automatic` | `manual` — why the customer is being shown this at all. */
316
+ mode: string;
317
+ /** Never empty: a connector with no per-tool snippet for a type still describes the change. */
318
+ documents: InstructionDocument[];
319
+ notes: string[];
320
+ updatedAt: string;
321
+ }
322
+ /** The change rendered for one delivery tool. */
323
+ export interface InstructionDocument {
324
+ id: string;
325
+ /** terraform | cloudformation | bicep | aws-cli | gcloud | az-cli | manual — keys the chooser. */
326
+ variant: string;
327
+ variantLabel: string;
328
+ title: string;
329
+ description: string;
330
+ /** Ordered instructions shown above the snippet. The snippet alone never says where it goes. */
331
+ steps: string[];
332
+ /** Syntax hint for the code block: json | yaml | hcl | shell | text. */
333
+ format: string;
334
+ /** Fully rendered for this workload — render verbatim, never substitute into it. */
335
+ content: string;
336
+ /** Blanks the connector genuinely could not fill. Absent when nothing is left to supply. */
337
+ unresolved?: InstructionInput[] | null;
338
+ }
339
+ /** One blank left in a document for the customer to fill in. */
340
+ export interface InstructionInput {
341
+ /** The placeholder exactly as it appears in `content`, e.g. `<YOUR_CONTAINER>`. */
342
+ placeholder: string;
343
+ description: string;
344
+ }
package/lib/types.js CHANGED
@@ -1 +1 @@
1
- export{c7 as ActionCategoryTypes,bx as ActionKeyTypes,by as ActionType,hi as AgentInjectedReason,hj as BooleanOperation,cd as CloudConnectorFeatureKey,am as CodeAttributesKeyTypes,hk as ConditionType,bd as Crud,ag as CustomInstrumentationsKeyTypes,cP as DesiredConditionActionItemType,cs as DesiredStateProgress,hl as DestinationTypes,be as EntityTypes,bO as ExtractionDataFormat,p as FieldTypes,ai as GolangCustomProbe,ak as HeadersCollectionKeyTypes,J as InputTypes,hm as InsightsAnomalyClassFindingKind,g4 as InsightsAnomalyResolution,g0 as InsightsAnomalyStatus,gb as InsightsBaselineLearningPhase,g3 as InsightsBulkResolution,ge as InsightsDeviationClass,bm as InsightsEntityTypes,g1 as InsightsFindingKind,gh as InsightsLearningConditionType,gg as InsightsLearningMode,gf as InsightsPolicyScope,gi as InsightsRuleMode,gd as InsightsSampleReason,g2 as InsightsSeverity,gl as InsightsStorageDiskStatus,hn as InsightsStorageHealthStatus,ho as InsightsTransactionKind,f$ as InsightsViolationStatus,hp as InstallationMethod,hq as InstallationStatus,af as InstrumentationRuleType,hr as IntrumentationStatus,ah as JavaCustomProbe,hs as JsonOperation,bM as K8sAttributesFrom,bG as K8sResourceKind,ht as K8sWorkloadContainerAgentConfigTracesHeadSamplingSpanMetricsMode,hu as ListDirection,hv as NumberOperation,hw as OtelDistroName,hx as OtherEntityTypes,al as PayloadCollectionKeyTypes,aj as PhpCustomProbe,P as PlatformType,hy as PodContainerLifecycleStatus,hz as PodContainerStatus,hA as PodPhase,hB as Profile,_ as ProgrammingLanguages,c$ as RecommendationApplyExampleType,d0 as RecommendationRemediationType,c_ as RecommendationState,hC as RecommendationType,hD as SIGNAL_KEY_TO_TYPE,hE as SIGNAL_TYPE_TO_KEY,hF as SignalKey,bD as SignalType,hG as SortDirection,S as StatusType,hH as StringOperation,b as Tier,hI as WorkloadRolloutReason,gH as WorkloadRolloutStatus}from"./chunks/ui-components-CjgsN17j.js";import"react/jsx-runtime";import"styled-components";import"./icons.js";import"zustand";import"react";import"javascript-time-ago";import"javascript-time-ago/locale/en";import"react-dom";import"prism-react-renderer";import"zustand/middleware";import"react-error-boundary";import"virtua";
1
+ export{c7 as ActionCategoryTypes,bx as ActionKeyTypes,by as ActionType,hi as AgentInjectedReason,hj as BooleanOperation,cd as CloudConnectorFeatureKey,an as CodeAttributesKeyTypes,hk as ConditionType,bd as Crud,ah as CustomInstrumentationsKeyTypes,cP as DesiredConditionActionItemType,cs as DesiredStateProgress,hl as DestinationTypes,be as EntityTypes,bO as ExtractionDataFormat,q as FieldTypes,aj as GolangCustomProbe,al as HeadersCollectionKeyTypes,K as InputTypes,hm as InsightsAnomalyClassFindingKind,g4 as InsightsAnomalyResolution,g0 as InsightsAnomalyStatus,gc as InsightsBaselineLearningPhase,g3 as InsightsBulkResolution,gf as InsightsDeviationClass,bm as InsightsEntityTypes,g1 as InsightsFindingKind,gi as InsightsLearningConditionType,gh as InsightsLearningMode,gg as InsightsPolicyScope,g8 as InsightsRuleMode,ge as InsightsSampleReason,g2 as InsightsSeverity,gl as InsightsStorageDiskStatus,hn as InsightsStorageHealthStatus,ho as InsightsTransactionKind,f$ as InsightsViolationStatus,hp as InstallationMethod,hq as InstallationStatus,ag as InstrumentationRuleType,hr as IntrumentationStatus,ai as JavaCustomProbe,hs as JsonOperation,bM as K8sAttributesFrom,bG as K8sResourceKind,ht as K8sWorkloadContainerAgentConfigTracesHeadSamplingSpanMetricsMode,hu as ListDirection,hv as NumberOperation,hw as OtelDistroName,hx as OtherEntityTypes,am as PayloadCollectionKeyTypes,ak as PhpCustomProbe,P as PlatformType,hy as PodContainerLifecycleStatus,hz as PodContainerStatus,hA as PodPhase,hB as Profile,$ as ProgrammingLanguages,c$ as RecommendationApplyExampleType,d0 as RecommendationRemediationType,c_ as RecommendationState,hC as RecommendationType,hD as SIGNAL_KEY_TO_TYPE,hE as SIGNAL_TYPE_TO_KEY,hF as SignalKey,bD as SignalType,hG as SortDirection,S as StatusType,hH as StringOperation,b as Tier,hI as WorkloadRolloutReason,gH as WorkloadRolloutStatus}from"./chunks/ui-components-D8rTJS7r.js";import"react/jsx-runtime";import"styled-components";import"./icons.js";import"zustand";import"react";import"javascript-time-ago";import"javascript-time-ago/locale/en";import"react-dom";import"prism-react-renderer";import"zustand/middleware";import"react-error-boundary";import"virtua";
package/lib/visuals.js CHANGED
@@ -1 +1 @@
1
- export{hJ as VISUAL_ODIGOS_LOGO_HEIGHT,hK as VISUAL_ODIGOS_LOGO_WIDTH,V as VisualGreenRings,hL as VisualOdigosLogo,eW as VisualPurpleRings}from"./chunks/ui-components-CjgsN17j.js";import"react/jsx-runtime";import"styled-components";import"./icons.js";import"zustand";import"react";import"javascript-time-ago";import"javascript-time-ago/locale/en";import"react-dom";import"prism-react-renderer";import"zustand/middleware";import"react-error-boundary";import"virtua";
1
+ export{hJ as VISUAL_ODIGOS_LOGO_HEIGHT,hK as VISUAL_ODIGOS_LOGO_WIDTH,V as VisualGreenRings,hL as VisualOdigosLogo,eW as VisualPurpleRings}from"./chunks/ui-components-D8rTJS7r.js";import"react/jsx-runtime";import"styled-components";import"./icons.js";import"zustand";import"react";import"javascript-time-ago";import"javascript-time-ago/locale/en";import"react-dom";import"prism-react-renderer";import"zustand/middleware";import"react-error-boundary";import"virtua";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@odigos/ui-kit",
3
- "version": "0.0.287",
3
+ "version": "0.0.288",
4
4
  "author": "Odigos",
5
5
  "license": "MIT",
6
6
  "repository": {