@scoutflo/alert-correlation 0.1.0 → 0.2.1

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.
package/README.md CHANGED
@@ -4,31 +4,115 @@ Pure alert-to-topology correlation contracts and policies for Scoutflo alert inv
4
4
 
5
5
  This package intentionally owns only shared contracts, extraction, matching, scoring, and decision logic. Provider detail fetching, tenant authorization, topology loading, topology slice construction, and API response shaping stay in Gateway. Investigation lifecycle and supervisor startup stay in Voyager.
6
6
 
7
+ ## Relationship To Correlation Core
8
+
9
+ Reusable cross-mode contracts live in `@scoutflo/correlation-core`.
10
+
11
+ `@scoutflo/alert-correlation` remains alert-specific. It owns `AlertRef`, alert time windows, provider alert extractors, alert-to-topology matching, alert-specific scoring, and alert decision behavior.
12
+
13
+ This package consumes core entity, fact, and status primitives where safe. It also exports `correlationCore` as a namespace for compatibility during migration, without replacing existing alert-specific export names.
14
+
7
15
  ## Version
8
16
 
9
- Current package version: `0.1.0`.
17
+ Current package version: `0.2.1`.
10
18
 
11
19
  Gateway and Voyager should consume the exact published version:
12
20
 
13
21
  ```json
14
- "@scoutflo/alert-correlation": "0.1.0"
22
+ "@scoutflo/alert-correlation": "0.2.1"
15
23
  ```
16
24
 
17
25
  During local development, consumers may temporarily use a `file:` dependency pointed at `../integration-sdk/packages/alert-correlation`, then replace it with the exact npm version before release.
18
26
 
19
- ## Release
27
+ ## Correlation Semantics
28
+
29
+ This package treats provider facts as evidence, not canonical topology identity. Provider-specific extractors should preserve source keys exactly when the key has operational meaning.
30
+
31
+ Important matching rules:
32
+
33
+ - `service_name` and `service` are distinct facts.
34
+ - Topology relationship attribute `serviceName` matches explicit service-name facts such as `service_name`, `serviceName`, and `service.name`.
35
+ - Topology relationship attribute `serviceLabel` matches generic Prometheus-style `service` labels.
36
+ - Workload ownership evidence such as `deployment`, `pod`, `container`, and `namespace` outranks monitoring backend exporter labels.
37
+ - Trace evidence such as `service_name`, `http_route`, `http_status_code`, `http_method`, `trace_id`, `span_id`, `span_kind`, and `env` is preserved for provider-aware matching.
38
+ - Prometheus-compatible extractors preserve grouped alert common labels/annotations and per-alert labels/annotations.
39
+ - Prometheus-compatible extractors include rule/query/evaluation facts such as `rule.name`, `rule.query`, `expr`, `query`, `for`, `activeAt`, `lastEvaluation`, `value`, and `alertstate`.
40
+ - The Sentry extractor includes issue, project/org, metadata, SDK, release, transaction, latest-event, and trace identity facts when present.
41
+
42
+ ## Release Flow
43
+
44
+ Use this flow when releasing only `@scoutflo/alert-correlation`. Do not publish the root `@scoutflo/integration-sdk` package for an alert-correlation-only release.
45
+
46
+ ### 1. Local Preflight
20
47
 
21
- Build and test before publishing:
48
+ Run the package build, package tests, root SDK build, and package dry run:
22
49
 
23
50
  ```bash
24
51
  npm run build --workspace @scoutflo/alert-correlation
25
52
  npm test --workspace @scoutflo/alert-correlation
53
+ npm run build
54
+ npm pack --dry-run --workspace @scoutflo/alert-correlation
55
+ ```
56
+
57
+ If local npm cache permissions fail during `npm pack --dry-run`, use a repo-local temporary cache instead of changing global cache ownership:
58
+
59
+ ```bash
60
+ mkdir -p .tmp/npm-cache
61
+ npm_config_cache=.tmp/npm-cache npm pack --dry-run --workspace @scoutflo/alert-correlation
62
+ ```
63
+
64
+ ### 2. Check The Registry
65
+
66
+ Before publishing, verify whether the exact version already exists:
67
+
68
+ ```bash
69
+ npm view @scoutflo/alert-correlation@<version> version
26
70
  ```
27
71
 
28
- Publish only when explicitly approved:
72
+ If npm returns the version, do not publish again. If npm returns `E404`, the version is not visible from the current registry/auth context and can be published if release approval exists.
73
+
74
+ ### 3. Publish This Workspace Only
75
+
76
+ Publish only the alert-correlation workspace:
29
77
 
30
78
  ```bash
31
79
  npm publish --workspace @scoutflo/alert-correlation
32
80
  ```
33
81
 
82
+ Do not run `npm publish` from the repository root for this release.
83
+
84
+ ### 4. Confirm The Published Version
85
+
86
+ After publish succeeds, confirm the exact version:
87
+
88
+ ```bash
89
+ npm view @scoutflo/alert-correlation@<version> version
90
+ ```
91
+
92
+ If `npm view` returns `E404` immediately after a successful publish, wait and retry before moving consumers. This can indicate registry propagation delay, package visibility, or auth scope issues.
93
+
94
+ ### 5. Roll Out To Consumers
95
+
96
+ After the version is visible, update Gateway and Voyager from any local `file:` dependency to the exact published version, for example:
97
+
98
+ ```json
99
+ "@scoutflo/alert-correlation": "0.2.1"
100
+ ```
101
+
102
+ Run install and the relevant tests in each consumer repo after updating its dependency lockfile.
103
+
104
+ Open and merge PRs in dependency order:
105
+
106
+ 1. `integration-sdk`
107
+ 2. Gateway
108
+ 3. Voyager
109
+ 4. Client
110
+
111
+ ### Safety Notes
112
+
113
+ - Do not commit `.npmrc`.
114
+ - Do not publish root `@scoutflo/integration-sdk` when releasing only alert correlation.
115
+ - Do not reuse a version after npm publish succeeds; bump the package version for any follow-up release.
116
+ - Do not move Gateway or Voyager from local `file:` dependencies until the published package is visible with `npm view`.
117
+
34
118
  The package is configured for public npm publishing through its `publishConfig`.
@@ -1,4 +1,5 @@
1
- export type CorrelationStatus = 'resolved' | 'ambiguous' | 'degraded' | 'unresolved';
1
+ import type { CorrelationEntityRef, CorrelationStatus as CoreCorrelationStatus } from '@scoutflo/correlation-core';
2
+ export type CorrelationStatus = Extract<CoreCorrelationStatus, 'resolved' | 'ambiguous' | 'degraded' | 'unresolved'>;
2
3
  export interface CorrelationEvidence {
3
4
  kind: 'relationship_attribute' | 'raw_alert_field' | 'resource_inference' | 'fallback';
4
5
  factKey?: string;
@@ -7,10 +8,7 @@ export interface CorrelationEvidence {
7
8
  reason: string;
8
9
  }
9
10
  export interface CorrelationCandidate {
10
- target: {
11
- type: 'service' | 'resource';
12
- id: string;
13
- };
11
+ target: CorrelationEntityRef;
14
12
  name?: string;
15
13
  confidence: number;
16
14
  evidence: CorrelationEvidence[];
@@ -18,10 +16,7 @@ export interface CorrelationCandidate {
18
16
  }
19
17
  export interface AlertCorrelationDecision {
20
18
  status: CorrelationStatus;
21
- target: {
22
- type: 'service' | 'resource';
23
- id: string;
24
- } | null;
19
+ target: CorrelationEntityRef | null;
25
20
  candidates: CorrelationCandidate[];
26
21
  evidence: CorrelationEvidence[];
27
22
  confidence: number;
@@ -1,9 +1,6 @@
1
- export type FactKind = 'label' | 'tag' | 'annotation' | 'provider_identity' | 'resource_hint' | 'text_derived' | 'time';
2
- export interface Fact {
3
- key: string;
4
- value: string;
5
- sourcePath: string;
6
- confidence: number;
1
+ import type { CorrelationFact, FactKind as CoreFactKind } from '@scoutflo/correlation-core';
2
+ export type FactKind = Extract<CoreFactKind, 'label' | 'tag' | 'annotation' | 'provider_identity' | 'resource_hint' | 'text_derived' | 'time'>;
3
+ export interface Fact extends Omit<CorrelationFact, 'kind'> {
7
4
  kind: FactKind;
8
5
  }
9
6
  export interface AlertTimeWindow {
@@ -1,8 +1,6 @@
1
- export type CorrelationEntityType = 'service' | 'resource';
2
- export interface CorrelationTopologyEntityRef {
3
- type: CorrelationEntityType;
4
- id: string;
5
- }
1
+ import type { CorrelationEntityRef, CorrelationEntityType } from '@scoutflo/correlation-core';
2
+ export type { CorrelationEntityType };
3
+ export type CorrelationTopologyEntityRef = CorrelationEntityRef;
6
4
  export interface CorrelationService {
7
5
  id: string;
8
6
  name: string;
@@ -4,6 +4,7 @@ exports.DETERMINISTIC_CONFIDENCE = void 0;
4
4
  exports.decideTarget = decideTarget;
5
5
  const reasonCodes_1 = require("./reasonCodes");
6
6
  exports.DETERMINISTIC_CONFIDENCE = 8;
7
+ const DETERMINISTIC_CONFIDENCE_MARGIN = 3;
7
8
  function hasTopologyEvidence(candidate) {
8
9
  return candidate.evidence.some((evidence) => evidence.kind === 'relationship_attribute' || evidence.kind === 'resource_inference');
9
10
  }
@@ -26,7 +27,11 @@ function decideTarget(candidates) {
26
27
  reasonCodes: [reasonCodes_1.REASON_CODES.NO_CANDIDATES],
27
28
  };
28
29
  }
29
- if (ranked.length === 1 && best.confidence >= exports.DETERMINISTIC_CONFIDENCE && hasTopologyEvidence(best)) {
30
+ const second = ranked[1];
31
+ const isDeterministic = best.confidence >= exports.DETERMINISTIC_CONFIDENCE
32
+ && hasTopologyEvidence(best)
33
+ && (!second || best.confidence - second.confidence >= DETERMINISTIC_CONFIDENCE_MARGIN);
34
+ if (isDeterministic) {
30
35
  return {
31
36
  status: 'resolved',
32
37
  target: best.target,
@@ -1 +1 @@
1
- {"version":3,"file":"decideTarget.js","sourceRoot":"","sources":["../../../src/decision/decideTarget.ts"],"names":[],"mappings":";;;AAoBA,oCAoCC;AAvDD,+CAA6C;AAEhC,QAAA,wBAAwB,GAAG,CAAC,CAAC;AAE1C,SAAS,mBAAmB,CAAC,SAA+B;IAC1D,OAAO,SAAS,CAAC,QAAQ,CAAC,IAAI,CAC5B,CAAC,QAAQ,EAAE,EAAE,CACX,QAAQ,CAAC,IAAI,KAAK,wBAAwB,IAAI,QAAQ,CAAC,IAAI,KAAK,oBAAoB,CACvF,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,UAAkC;IAC1D,OAAO,CAAC,GAAG,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;AACnF,CAAC;AAED,SAAS,iBAAiB,CAAC,UAAkC,EAAE,QAAkB,EAAE;IACjF,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/F,CAAC;AAED,SAAgB,YAAY,CAAC,UAAkC;IAC7D,MAAM,MAAM,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAEvB,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO;YACL,MAAM,EAAE,YAAY;YACpB,MAAM,EAAE,IAAI;YACZ,UAAU,EAAE,EAAE;YACd,QAAQ,EAAE,EAAE;YACZ,UAAU,EAAE,CAAC;YACb,WAAW,EAAE,CAAC,0BAAY,CAAC,aAAa,CAAC;SAC1C,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,IAAI,gCAAwB,IAAI,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;QACpG,OAAO;YACL,MAAM,EAAE,UAAU;YAClB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,UAAU,EAAE,MAAM;YAClB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,WAAW,EAAE,iBAAiB,CAAC,MAAM,EAAE,CAAC,0BAAY,CAAC,sBAAsB,CAAC,CAAC;SAC9E,CAAC;IACJ,CAAC;IAED,OAAO;QACL,MAAM,EAAE,WAAW;QACnB,MAAM,EAAE,IAAI;QACZ,UAAU,EAAE,MAAM;QAClB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,WAAW,EAAE,iBAAiB,CAAC,MAAM,EAAE;YACrC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,0BAAY,CAAC,mBAAmB,CAAC,CAAC,CAAC,0BAAY,CAAC,cAAc;SACnF,CAAC;KACH,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"decideTarget.js","sourceRoot":"","sources":["../../../src/decision/decideTarget.ts"],"names":[],"mappings":";;;AAqBA,oCA0CC;AA9DD,+CAA6C;AAEhC,QAAA,wBAAwB,GAAG,CAAC,CAAC;AAC1C,MAAM,+BAA+B,GAAG,CAAC,CAAC;AAE1C,SAAS,mBAAmB,CAAC,SAA+B;IAC1D,OAAO,SAAS,CAAC,QAAQ,CAAC,IAAI,CAC5B,CAAC,QAAQ,EAAE,EAAE,CACX,QAAQ,CAAC,IAAI,KAAK,wBAAwB,IAAI,QAAQ,CAAC,IAAI,KAAK,oBAAoB,CACvF,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,UAAkC;IAC1D,OAAO,CAAC,GAAG,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;AACnF,CAAC;AAED,SAAS,iBAAiB,CAAC,UAAkC,EAAE,QAAkB,EAAE;IACjF,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/F,CAAC;AAED,SAAgB,YAAY,CAAC,UAAkC;IAC7D,MAAM,MAAM,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAEvB,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO;YACL,MAAM,EAAE,YAAY;YACpB,MAAM,EAAE,IAAI;YACZ,UAAU,EAAE,EAAE;YACd,QAAQ,EAAE,EAAE;YACZ,UAAU,EAAE,CAAC;YACb,WAAW,EAAE,CAAC,0BAAY,CAAC,aAAa,CAAC;SAC1C,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACzB,MAAM,eAAe,GACnB,IAAI,CAAC,UAAU,IAAI,gCAAwB;WACxC,mBAAmB,CAAC,IAAI,CAAC;WACzB,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,+BAA+B,CAAC,CAAC;IAEzF,IAAI,eAAe,EAAE,CAAC;QACpB,OAAO;YACL,MAAM,EAAE,UAAU;YAClB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,UAAU,EAAE,MAAM;YAClB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,WAAW,EAAE,iBAAiB,CAAC,MAAM,EAAE,CAAC,0BAAY,CAAC,sBAAsB,CAAC,CAAC;SAC9E,CAAC;IACJ,CAAC;IAED,OAAO;QACL,MAAM,EAAE,WAAW;QACnB,MAAM,EAAE,IAAI;QACZ,UAAU,EAAE,MAAM;QAClB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,WAAW,EAAE,iBAAiB,CAAC,MAAM,EAAE;YACrC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,0BAAY,CAAC,mBAAmB,CAAC,CAAC,CAAC,0BAAY,CAAC,cAAc;SACnF,CAAC;KACH,CAAC;AACJ,CAAC"}
@@ -3,7 +3,7 @@ import { type ProviderTimeHints } from '../time/normalizeAlertTime';
3
3
  import type { ProviderExtractor, ProviderExtractorInput } from './types';
4
4
  type UnknownRecord = Record<string, unknown>;
5
5
  export declare const GENERIC_EXTRACTOR_NAME = "generic-extractor";
6
- export declare const EXTRACTOR_VERSION = "0.1.0";
6
+ export declare const EXTRACTOR_VERSION = "0.2.0";
7
7
  export declare function isRecord(value: unknown): value is UnknownRecord;
8
8
  export declare function primitiveToString(value: unknown): string | undefined;
9
9
  export declare function makeFact(input: {
@@ -12,7 +12,7 @@ exports.extractProviderTimeHints = extractProviderTimeHints;
12
12
  exports.extractGenericFacts = extractGenericFacts;
13
13
  const normalizeAlertTime_1 = require("../time/normalizeAlertTime");
14
14
  exports.GENERIC_EXTRACTOR_NAME = 'generic-extractor';
15
- exports.EXTRACTOR_VERSION = '0.1.0';
15
+ exports.EXTRACTOR_VERSION = '0.2.0';
16
16
  function isRecord(value) {
17
17
  return typeof value === 'object' && value !== null && !Array.isArray(value);
18
18
  }
@@ -8,9 +8,83 @@ function firstAlert(raw) {
8
8
  const alerts = (0, genericExtractor_1.getPath)(raw, ['alerts']);
9
9
  return Array.isArray(alerts) ? alerts[0] : undefined;
10
10
  }
11
+ function alerts(raw) {
12
+ const value = (0, genericExtractor_1.getPath)(raw, ['alerts']);
13
+ return Array.isArray(value) ? value : [];
14
+ }
11
15
  function compactFacts(facts) {
12
16
  return facts.filter((fact) => Boolean(fact));
13
17
  }
18
+ function factsFromAlerts(raw, path) {
19
+ return alerts(raw).flatMap((alert, index) => (0, genericExtractor_1.factsFromRecord)((0, genericExtractor_1.getPath)(alert, [path]), `raw.alerts[${index}].${path}`, path === 'labels' ? 'label' : 'annotation', path === 'labels' ? 0.8 : 0.65));
20
+ }
21
+ function explicitProviderFacts(raw) {
22
+ return compactFacts([
23
+ (0, genericExtractor_1.makeFact)({
24
+ key: 'rule.name',
25
+ value: (0, genericExtractor_1.firstPrimitive)(raw, [['rule', 'name']]),
26
+ sourcePath: 'raw.rule.name',
27
+ kind: 'provider_identity',
28
+ confidence: 0.86,
29
+ }),
30
+ (0, genericExtractor_1.makeFact)({
31
+ key: 'rule.query',
32
+ value: (0, genericExtractor_1.firstPrimitive)(raw, [['rule', 'query']]),
33
+ sourcePath: 'raw.rule.query',
34
+ kind: 'text_derived',
35
+ confidence: 0.82,
36
+ }),
37
+ (0, genericExtractor_1.makeFact)({
38
+ key: 'expr',
39
+ value: (0, genericExtractor_1.firstPrimitive)(raw, [['expr']]),
40
+ sourcePath: 'raw.expr',
41
+ kind: 'text_derived',
42
+ confidence: 0.82,
43
+ }),
44
+ (0, genericExtractor_1.makeFact)({
45
+ key: 'query',
46
+ value: (0, genericExtractor_1.firstPrimitive)(raw, [['query']]),
47
+ sourcePath: 'raw.query',
48
+ kind: 'text_derived',
49
+ confidence: 0.8,
50
+ }),
51
+ (0, genericExtractor_1.makeFact)({
52
+ key: 'for',
53
+ value: (0, genericExtractor_1.firstPrimitive)(raw, [['for']]),
54
+ sourcePath: 'raw.for',
55
+ kind: 'time',
56
+ confidence: 0.74,
57
+ }),
58
+ (0, genericExtractor_1.makeFact)({
59
+ key: 'activeAt',
60
+ value: (0, genericExtractor_1.firstPrimitive)(raw, [['activeAt']]),
61
+ sourcePath: 'raw.activeAt',
62
+ kind: 'time',
63
+ confidence: 0.78,
64
+ }),
65
+ (0, genericExtractor_1.makeFact)({
66
+ key: 'lastEvaluation',
67
+ value: (0, genericExtractor_1.firstPrimitive)(raw, [['lastEvaluation']]),
68
+ sourcePath: 'raw.lastEvaluation',
69
+ kind: 'time',
70
+ confidence: 0.78,
71
+ }),
72
+ (0, genericExtractor_1.makeFact)({
73
+ key: 'value',
74
+ value: (0, genericExtractor_1.firstPrimitive)(raw, [['value']]),
75
+ sourcePath: 'raw.value',
76
+ kind: 'text_derived',
77
+ confidence: 0.7,
78
+ }),
79
+ (0, genericExtractor_1.makeFact)({
80
+ key: 'alertstate',
81
+ value: (0, genericExtractor_1.firstPrimitive)(raw, [['alertstate']]),
82
+ sourcePath: 'raw.alertstate',
83
+ kind: 'label',
84
+ confidence: 0.72,
85
+ }),
86
+ ]);
87
+ }
14
88
  function extractPrometheusCompatibleFacts(input, extractorName) {
15
89
  const raw = input.raw;
16
90
  const alert = firstAlert(raw);
@@ -20,12 +94,13 @@ function extractPrometheusCompatibleFacts(input, extractorName) {
20
94
  ...(0, genericExtractor_1.factsFromRecord)((0, genericExtractor_1.getPath)(raw, ['metric']), 'raw.metric', 'label', 0.78),
21
95
  ...(0, genericExtractor_1.factsFromTagCollection)((0, genericExtractor_1.getPath)(raw, ['tags']), 'raw.tags'),
22
96
  ...(0, genericExtractor_1.factsFromRecord)((0, genericExtractor_1.getPath)(raw, ['rule', 'labels']), 'raw.rule.labels', 'label', 0.76),
23
- ...(0, genericExtractor_1.factsFromRecord)((0, genericExtractor_1.getPath)(alert, ['labels']), 'raw.alerts[0].labels', 'label', 0.8),
97
+ ...factsFromAlerts(raw, 'labels'),
24
98
  ];
25
99
  const textHints = [
26
100
  ...(0, genericExtractor_1.factsFromRecord)((0, genericExtractor_1.getPath)(raw, ['annotations']), 'raw.annotations', 'annotation', 0.65),
27
101
  ...(0, genericExtractor_1.factsFromRecord)((0, genericExtractor_1.getPath)(raw, ['commonAnnotations']), 'raw.commonAnnotations', 'annotation', 0.65),
28
- ...(0, genericExtractor_1.factsFromRecord)((0, genericExtractor_1.getPath)(alert, ['annotations']), 'raw.alerts[0].annotations', 'annotation', 0.65),
102
+ ...factsFromAlerts(raw, 'annotations'),
103
+ ...explicitProviderFacts(raw),
29
104
  ];
30
105
  const alertNameFact = labels.find((fact) => fact.key === 'alertname');
31
106
  const severityFact = labels.find((fact) => fact.key === 'severity');
@@ -1 +1 @@
1
- {"version":3,"file":"prometheusExtractor.js","sourceRoot":"","sources":["../../../src/extractors/prometheusExtractor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prometheusExtractor.js","sourceRoot":"","sources":["../../../src/extractors/prometheusExtractor.ts"],"names":[],"mappings":"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"}
@@ -21,9 +21,51 @@ exports.sentryExtractor = {
21
21
  kind: 'label',
22
22
  confidence: 0.72,
23
23
  }),
24
+ (0, genericExtractor_1.makeFact)({
25
+ key: 'status',
26
+ value: (0, genericExtractor_1.firstPrimitive)(input.raw, [['status']]),
27
+ sourcePath: 'raw.status',
28
+ kind: 'label',
29
+ confidence: 0.74,
30
+ }),
31
+ (0, genericExtractor_1.makeFact)({
32
+ key: 'platform',
33
+ value: (0, genericExtractor_1.firstPrimitive)(input.raw, [['platform']]),
34
+ sourcePath: 'raw.platform',
35
+ kind: 'label',
36
+ confidence: 0.72,
37
+ }),
24
38
  ]),
25
39
  ];
26
40
  const identifiers = compactFacts([
41
+ (0, genericExtractor_1.makeFact)({
42
+ key: 'issueId',
43
+ value: (0, genericExtractor_1.firstPrimitive)(input.raw, [['id'], ['issueId']]),
44
+ sourcePath: 'raw.id',
45
+ kind: 'provider_identity',
46
+ confidence: 0.92,
47
+ }),
48
+ (0, genericExtractor_1.makeFact)({
49
+ key: 'shortId',
50
+ value: (0, genericExtractor_1.firstPrimitive)(input.raw, [['shortId'], ['short_id']]),
51
+ sourcePath: 'raw.shortId',
52
+ kind: 'provider_identity',
53
+ confidence: 0.9,
54
+ }),
55
+ (0, genericExtractor_1.makeFact)({
56
+ key: 'shortIdPrefix',
57
+ value: (0, genericExtractor_1.firstPrimitive)(input.raw, [['shortId'], ['short_id']])?.split('-')[0],
58
+ sourcePath: 'raw.shortId',
59
+ kind: 'provider_identity',
60
+ confidence: 0.76,
61
+ }),
62
+ (0, genericExtractor_1.makeFact)({
63
+ key: 'permalink',
64
+ value: (0, genericExtractor_1.firstPrimitive)(input.raw, [['permalink']]),
65
+ sourcePath: 'raw.permalink',
66
+ kind: 'provider_identity',
67
+ confidence: 0.86,
68
+ }),
27
69
  (0, genericExtractor_1.makeFact)({
28
70
  key: 'projectSlug',
29
71
  value: (0, genericExtractor_1.firstPrimitive)(input.raw, [['project', 'slug'], ['projectSlug']]),
@@ -31,11 +73,24 @@ exports.sentryExtractor = {
31
73
  kind: 'provider_identity',
32
74
  confidence: 0.9,
33
75
  }),
76
+ (0, genericExtractor_1.makeFact)({
77
+ key: 'orgSlug',
78
+ value: (0, genericExtractor_1.firstPrimitive)(input.raw, [
79
+ ['organization', 'slug'],
80
+ ['org', 'slug'],
81
+ ['organizationSlug'],
82
+ ['orgSlug'],
83
+ ]),
84
+ sourcePath: 'raw.organization.slug',
85
+ kind: 'provider_identity',
86
+ confidence: 0.84,
87
+ }),
34
88
  (0, genericExtractor_1.makeFact)({
35
89
  key: 'releasePackage',
36
90
  value: (0, genericExtractor_1.firstPrimitive)(input.raw, [
37
91
  ['firstRelease', 'versionInfo', 'package'],
38
92
  ['release', 'versionInfo', 'package'],
93
+ ['latestEvent', 'release', 'package'],
39
94
  ]),
40
95
  sourcePath: 'raw.firstRelease.versionInfo.package',
41
96
  kind: 'provider_identity',
@@ -48,8 +103,83 @@ exports.sentryExtractor = {
48
103
  kind: 'provider_identity',
49
104
  confidence: 0.75,
50
105
  }),
106
+ (0, genericExtractor_1.makeFact)({
107
+ key: 'latestEvent.eventID',
108
+ value: (0, genericExtractor_1.firstPrimitive)(input.raw, [['latestEvent', 'eventID'], ['latestEvent', 'eventId']]),
109
+ sourcePath: 'raw.latestEvent.eventID',
110
+ kind: 'provider_identity',
111
+ confidence: 0.9,
112
+ }),
113
+ (0, genericExtractor_1.makeFact)({
114
+ key: 'trace_id',
115
+ value: (0, genericExtractor_1.firstPrimitive)(input.raw, [
116
+ ['latestEvent', 'contexts', 'trace', 'trace_id'],
117
+ ['contexts', 'trace', 'trace_id'],
118
+ ['trace_id'],
119
+ ]),
120
+ sourcePath: 'raw.latestEvent.contexts.trace.trace_id',
121
+ kind: 'provider_identity',
122
+ confidence: 0.82,
123
+ }),
124
+ (0, genericExtractor_1.makeFact)({
125
+ key: 'span_id',
126
+ value: (0, genericExtractor_1.firstPrimitive)(input.raw, [
127
+ ['latestEvent', 'contexts', 'trace', 'span_id'],
128
+ ['contexts', 'trace', 'span_id'],
129
+ ['span_id'],
130
+ ]),
131
+ sourcePath: 'raw.latestEvent.contexts.trace.span_id',
132
+ kind: 'provider_identity',
133
+ confidence: 0.78,
134
+ }),
135
+ (0, genericExtractor_1.makeFact)({
136
+ key: 'releaseVersion',
137
+ value: (0, genericExtractor_1.firstPrimitive)(input.raw, [
138
+ ['firstRelease', 'version'],
139
+ ['release', 'version'],
140
+ ['latestEvent', 'release', 'version'],
141
+ ]),
142
+ sourcePath: 'raw.latestEvent.release.version',
143
+ kind: 'provider_identity',
144
+ confidence: 0.82,
145
+ }),
51
146
  ]);
52
147
  const textHints = compactFacts([
148
+ (0, genericExtractor_1.makeFact)({
149
+ key: 'metadata.type',
150
+ value: (0, genericExtractor_1.firstPrimitive)(input.raw, [['metadata', 'type']]),
151
+ sourcePath: 'raw.metadata.type',
152
+ kind: 'text_derived',
153
+ confidence: 0.74,
154
+ }),
155
+ (0, genericExtractor_1.makeFact)({
156
+ key: 'metadata.value',
157
+ value: (0, genericExtractor_1.firstPrimitive)(input.raw, [['metadata', 'value']]),
158
+ sourcePath: 'raw.metadata.value',
159
+ kind: 'text_derived',
160
+ confidence: 0.74,
161
+ }),
162
+ (0, genericExtractor_1.makeFact)({
163
+ key: 'metadata.function',
164
+ value: (0, genericExtractor_1.firstPrimitive)(input.raw, [['metadata', 'function']]),
165
+ sourcePath: 'raw.metadata.function',
166
+ kind: 'text_derived',
167
+ confidence: 0.72,
168
+ }),
169
+ (0, genericExtractor_1.makeFact)({
170
+ key: 'sdk.name',
171
+ value: (0, genericExtractor_1.firstPrimitive)(input.raw, [['sdk', 'name'], ['latestEvent', 'sdk', 'name']]),
172
+ sourcePath: 'raw.sdk.name',
173
+ kind: 'text_derived',
174
+ confidence: 0.7,
175
+ }),
176
+ (0, genericExtractor_1.makeFact)({
177
+ key: 'sdk.version',
178
+ value: (0, genericExtractor_1.firstPrimitive)(input.raw, [['sdk', 'version'], ['latestEvent', 'sdk', 'version']]),
179
+ sourcePath: 'raw.sdk.version',
180
+ kind: 'text_derived',
181
+ confidence: 0.7,
182
+ }),
53
183
  (0, genericExtractor_1.makeFact)({
54
184
  key: 'logger',
55
185
  value: (0, genericExtractor_1.firstPrimitive)(input.raw, [['logger']]),
@@ -73,8 +203,10 @@ exports.sentryExtractor = {
73
203
  }),
74
204
  (0, genericExtractor_1.makeFact)({
75
205
  key: 'transaction',
76
- value: (0, genericExtractor_1.firstPrimitive)(input.raw, [['transaction']]),
77
- sourcePath: 'raw.transaction',
206
+ value: (0, genericExtractor_1.firstPrimitive)(input.raw, [['transaction'], ['latestEvent', 'transaction']]),
207
+ sourcePath: (0, genericExtractor_1.firstPrimitive)(input.raw, [['transaction']])
208
+ ? 'raw.transaction'
209
+ : 'raw.latestEvent.transaction',
78
210
  kind: 'resource_hint',
79
211
  confidence: 0.68,
80
212
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"sentryExtractor.js","sourceRoot":"","sources":["../../../src/extractors/sentryExtractor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sentryExtractor.js","sourceRoot":"","sources":["../../../src/extractors/sentryExtractor.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  export declare const ALERT_CORRELATION_PACKAGE = "@scoutflo/alert-correlation";
2
+ export * as correlationCore from '@scoutflo/correlation-core';
2
3
  export * from './contracts/alertRef';
3
4
  export * from './contracts/facts';
4
5
  export * from './contracts/topology';
package/dist/src/index.js CHANGED
@@ -10,12 +10,35 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
10
10
  if (k2 === undefined) k2 = k;
11
11
  o[k2] = m[k];
12
12
  }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
13
35
  var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
36
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
37
  };
16
38
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.ALERT_CORRELATION_PACKAGE = void 0;
39
+ exports.correlationCore = exports.ALERT_CORRELATION_PACKAGE = void 0;
18
40
  exports.ALERT_CORRELATION_PACKAGE = '@scoutflo/alert-correlation';
41
+ exports.correlationCore = __importStar(require("@scoutflo/correlation-core"));
19
42
  __exportStar(require("./contracts/alertRef"), exports);
20
43
  __exportStar(require("./contracts/facts"), exports);
21
44
  __exportStar(require("./contracts/topology"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAa,QAAA,yBAAyB,GAAG,6BAA6B,CAAC;AAEvE,uDAAqC;AACrC,oDAAkC;AAClC,uDAAqC;AACrC,uDAAqC;AACrC,sDAAoC;AACpC,4DAA0C;AAC1C,qDAAmC;AACnC,gEAA8C;AAC9C,mEAAiD;AACjD,+DAA6C;AAC7C,wEAAsD;AACtD,wDAAsC;AACtC,yDAAuC;AACvC,0DAAwC;AACxC,mDAAiC;AACjC,yEAAuD;AACvD,4DAA0C"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAa,QAAA,yBAAyB,GAAG,6BAA6B,CAAC;AAEvE,8EAA8D;AAE9D,uDAAqC;AACrC,oDAAkC;AAClC,uDAAqC;AACrC,uDAAqC;AACrC,sDAAoC;AACpC,4DAA0C;AAC1C,qDAAmC;AACnC,gEAA8C;AAC9C,mEAAiD;AACjD,+DAA6C;AAC7C,wEAAsD;AACtD,wDAAsC;AACtC,yDAAuC;AACvC,0DAAwC;AACxC,mDAAiC;AACjC,yEAAuD;AACvD,4DAA0C"}
@@ -1,4 +1,4 @@
1
1
  import type { AlertCorrelationFacts, CorrelationCandidate, TopologyCandidateInput } from '../contracts';
2
2
  export declare const PROVIDER_RELATIONSHIP_MATCHER_NAME = "provider-relationship-matcher";
3
- export declare const MATCHER_VERSION = "0.1.0";
3
+ export declare const MATCHER_VERSION = "0.2.0";
4
4
  export declare function matchTopologyCandidates(facts: AlertCorrelationFacts, topology: TopologyCandidateInput): CorrelationCandidate[];
@@ -4,19 +4,29 @@ exports.MATCHER_VERSION = exports.PROVIDER_RELATIONSHIP_MATCHER_NAME = void 0;
4
4
  exports.matchTopologyCandidates = matchTopologyCandidates;
5
5
  const reasonCodes_1 = require("../decision/reasonCodes");
6
6
  exports.PROVIDER_RELATIONSHIP_MATCHER_NAME = 'provider-relationship-matcher';
7
- exports.MATCHER_VERSION = '0.1.0';
7
+ exports.MATCHER_VERSION = '0.2.0';
8
8
  const ATTRIBUTE_POLICIES = {
9
- serviceLabel: { factKeys: ['service', 'microservice'] },
10
- appLabel: { factKeys: ['app', 'app.kubernetes.io/name', 'k8s-app'] },
11
- containerName: { factKeys: ['container', 'containerName', 'container_name'] },
12
- jobLabel: { factKeys: ['job'] },
13
- deploymentName: { factKeys: ['deployment', 'deploymentName', 'deployment_name'] },
14
- alertnamePattern: { factKeys: ['alertname', 'title'], pattern: true },
15
- serviceName: { factKeys: ['service', 'microservice', 'serviceName'] },
16
- releasePackage: { factKeys: ['releasePackage'] },
17
- project: { factKeys: ['project', 'projectSlug'] },
18
- serverNamePattern: { factKeys: ['serverName', 'server_name', 'instance'], pattern: true },
9
+ serviceLabel: { factKeys: ['service', 'microservice'], score: 8 },
10
+ appLabel: { factKeys: ['app', 'application', 'app.kubernetes.io/name', 'k8s-app'], score: 9 },
11
+ containerName: { factKeys: ['container', 'containerName', 'container_name'], score: 11 },
12
+ namespace: { factKeys: ['namespace'], score: 10 },
13
+ podName: { factKeys: ['pod', 'podName', 'pod_name'], score: 11 },
14
+ jobLabel: { factKeys: ['job'], score: 6 },
15
+ deploymentName: { factKeys: ['deployment', 'deploymentName', 'deployment_name'], score: 12 },
16
+ alertnamePattern: { factKeys: ['alertname', 'title'], pattern: true, score: 8 },
17
+ serviceName: { factKeys: ['service_name', 'serviceName', 'service.name'], score: 12 },
18
+ httpRoute: { factKeys: ['http_route', 'http.route', 'route'], score: 9 },
19
+ httpMethod: { factKeys: ['http_method', 'http.method'], score: 7 },
20
+ httpStatusCode: { factKeys: ['http_status_code', 'http.status_code'], score: 6 },
21
+ traceId: { factKeys: ['trace_id', 'traceId'], score: 8 },
22
+ spanId: { factKeys: ['span_id', 'spanId'], score: 7 },
23
+ spanKind: { factKeys: ['span_kind', 'spanKind'], score: 7 },
24
+ env: { factKeys: ['env', 'environment'], score: 7 },
25
+ releasePackage: { factKeys: ['releasePackage'], score: 10 },
26
+ project: { factKeys: ['project', 'projectSlug'], score: 9 },
27
+ serverNamePattern: { factKeys: ['serverName', 'server_name', 'instance'], pattern: true, score: 8 },
19
28
  };
29
+ const MONITORING_EXPORTER_PATTERN = /(?:^|[-_])(vm|victoria|prometheus|alertmanager|grafana|kube-state-metrics|node-exporter|cadvisor)(?:$|[-_])/i;
20
30
  function normalize(value) {
21
31
  return value.trim().toLowerCase();
22
32
  }
@@ -54,6 +64,12 @@ function targetFromRelationship(relationship) {
54
64
  function candidateKey(target) {
55
65
  return `${target.type}:${target.id}`;
56
66
  }
67
+ function scoreMatch(policy, matchingFact) {
68
+ if (matchingFact.key === 'service' && MONITORING_EXPORTER_PATTERN.test(matchingFact.value)) {
69
+ return Math.max(3, policy.score - 5);
70
+ }
71
+ return policy.score;
72
+ }
57
73
  function matchTopologyCandidates(facts, topology) {
58
74
  const factList = allFacts(facts);
59
75
  const relationships = [
@@ -77,7 +93,7 @@ function matchTopologyCandidates(facts, topology) {
77
93
  });
78
94
  if (!matchingFact)
79
95
  continue;
80
- const score = policy.pattern ? 8 : 10;
96
+ const score = scoreMatch(policy, matchingFact);
81
97
  const key = candidateKey(target);
82
98
  const existing = byTarget.get(key);
83
99
  const evidence = {
@@ -91,7 +107,7 @@ function matchTopologyCandidates(facts, topology) {
91
107
  ? reasonCodes_1.REASON_CODES.RELATIONSHIP_PATTERN_MATCH
92
108
  : reasonCodes_1.REASON_CODES.RELATIONSHIP_ATTRIBUTE_MATCH;
93
109
  if (existing) {
94
- existing.confidence = Math.min(10, Math.max(existing.confidence, score) + 1);
110
+ existing.confidence += score;
95
111
  existing.evidence.push(evidence);
96
112
  existing.reasonCodes = [...new Set([...existing.reasonCodes, reasonCode])];
97
113
  }
@@ -1 +1 @@
1
- {"version":3,"file":"providerRelationshipMatcher.js","sourceRoot":"","sources":["../../../src/matchers/providerRelationshipMatcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"providerRelationshipMatcher.js","sourceRoot":"","sources":["../../../src/matchers/providerRelationshipMatcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const strict_1 = __importDefault(require("node:assert/strict"));
7
+ const node_test_1 = __importDefault(require("node:test"));
8
+ const src_1 = require("../src");
9
+ (0, node_test_1.default)('alert facts remain core fact compatible', () => {
10
+ const fact = {
11
+ key: 'service',
12
+ value: 'checkout',
13
+ sourcePath: 'labels.service',
14
+ confidence: 0.8,
15
+ kind: 'label',
16
+ };
17
+ const parsed = src_1.correlationCore.correlationFactSchema.parse(fact);
18
+ strict_1.default.equal(parsed.key, 'service');
19
+ strict_1.default.equal(parsed.kind, 'label');
20
+ });
21
+ (0, node_test_1.default)('alert topology entity refs use the core entity ref shape', () => {
22
+ const ref = {
23
+ type: 'service',
24
+ id: 'svc-checkout',
25
+ };
26
+ const parsed = src_1.correlationCore.correlationEntityRefSchema.parse(ref);
27
+ strict_1.default.deepEqual(parsed, ref);
28
+ });
29
+ (0, node_test_1.default)('alert decisions preserve legacy confidence candidate shape', () => {
30
+ const candidate = {
31
+ target: { type: 'service', id: 'svc-checkout' },
32
+ name: 'checkout',
33
+ confidence: 10,
34
+ evidence: [
35
+ {
36
+ kind: 'relationship_attribute',
37
+ factKey: 'service',
38
+ factValue: 'checkout',
39
+ relationshipId: 'rel-1',
40
+ reason: 'serviceLabel exact match',
41
+ },
42
+ ],
43
+ reasonCodes: ['relationship_attribute_match'],
44
+ };
45
+ const decision = (0, src_1.decideTarget)([candidate]);
46
+ strict_1.default.equal(decision.status, 'resolved');
47
+ strict_1.default.equal(decision.confidence, 10);
48
+ strict_1.default.deepEqual(decision.target, { type: 'service', id: 'svc-checkout' });
49
+ });
50
+ //# sourceMappingURL=core-compatibility.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core-compatibility.test.js","sourceRoot":"","sources":["../../test/core-compatibility.test.ts"],"names":[],"mappings":";;;;;AAAA,gEAAwC;AACxC,0DAA6B;AAC7B,gCAOgB;AAEhB,IAAA,mBAAI,EAAC,yCAAyC,EAAE,GAAG,EAAE;IACnD,MAAM,IAAI,GAAS;QACjB,GAAG,EAAE,SAAS;QACd,KAAK,EAAE,UAAU;QACjB,UAAU,EAAE,gBAAgB;QAC5B,UAAU,EAAE,GAAG;QACf,IAAI,EAAE,OAAO;KACd,CAAC;IAEF,MAAM,MAAM,GAAG,qBAAe,CAAC,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAEjE,gBAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IACpC,gBAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACrC,CAAC,CAAC,CAAC;AAEH,IAAA,mBAAI,EAAC,0DAA0D,EAAE,GAAG,EAAE;IACpE,MAAM,GAAG,GAAiC;QACxC,IAAI,EAAE,SAAS;QACf,EAAE,EAAE,cAAc;KACnB,CAAC;IAEF,MAAM,MAAM,GAAG,qBAAe,CAAC,0BAA0B,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAErE,gBAAM,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAChC,CAAC,CAAC,CAAC;AAEH,IAAA,mBAAI,EAAC,4DAA4D,EAAE,GAAG,EAAE;IACtE,MAAM,SAAS,GAAyB;QACtC,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,cAAc,EAAE;QAC/C,IAAI,EAAE,UAAU;QAChB,UAAU,EAAE,EAAE;QACd,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,wBAAwB;gBAC9B,OAAO,EAAE,SAAS;gBAClB,SAAS,EAAE,UAAU;gBACrB,cAAc,EAAE,OAAO;gBACvB,MAAM,EAAE,0BAA0B;aACnC;SACF;QACD,WAAW,EAAE,CAAC,8BAA8B,CAAC;KAC9C,CAAC;IAEF,MAAM,QAAQ,GAA6B,IAAA,kBAAY,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IAErE,gBAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC1C,gBAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IACtC,gBAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,cAAc,EAAE,CAAC,CAAC;AAC7E,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,262 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const strict_1 = __importDefault(require("node:assert/strict"));
7
+ const node_test_1 = __importDefault(require("node:test"));
8
+ const src_1 = require("../src");
9
+ const baseRef = {
10
+ integrationId: 'int-hardening',
11
+ alertKey: 'hardening:1',
12
+ timestamp: '2026-06-14T09:55:00.000Z',
13
+ selectedAt: '2026-06-14T10:00:00.000Z',
14
+ };
15
+ function factValues(facts, key) {
16
+ return [
17
+ ...facts.labels,
18
+ ...facts.identifiers,
19
+ ...facts.resourceHints,
20
+ ...facts.textHints,
21
+ ...(facts.severity ? [facts.severity] : []),
22
+ ...(facts.title ? [facts.title] : []),
23
+ ].filter((fact) => fact.key === key).map((fact) => fact.value);
24
+ }
25
+ (0, node_test_1.default)('preserves service_name separately from service', () => {
26
+ const facts = (0, src_1.extractAlertFacts)({
27
+ alertRef: {
28
+ ...baseRef,
29
+ provider: 'victoriametrics',
30
+ },
31
+ raw: {
32
+ metric: {
33
+ service: 'vm-kube-state-metrics',
34
+ service_name: 'checkout-api',
35
+ },
36
+ },
37
+ });
38
+ strict_1.default.deepEqual(factValues(facts, 'service'), ['vm-kube-state-metrics']);
39
+ strict_1.default.deepEqual(factValues(facts, 'service_name'), ['checkout-api']);
40
+ });
41
+ (0, node_test_1.default)('topology serviceName matches service_name but not generic service', () => {
42
+ const facts = (0, src_1.extractAlertFacts)({
43
+ alertRef: {
44
+ ...baseRef,
45
+ provider: 'victoriametrics',
46
+ },
47
+ raw: {
48
+ metric: {
49
+ service: 'vm-kube-state-metrics',
50
+ service_name: 'checkout-api',
51
+ },
52
+ },
53
+ });
54
+ const candidates = (0, src_1.matchTopologyCandidates)(facts, {
55
+ sourceResource: { id: 'res-vm', name: 'VictoriaMetrics', provider: 'victoriametrics' },
56
+ monitoredByRelationships: [
57
+ {
58
+ id: 'rel-exporter',
59
+ relation: 'MONITORED_BY',
60
+ from: { type: 'service', id: 'svc-exporter' },
61
+ to: { type: 'resource', id: 'res-vm' },
62
+ attributes: { serviceName: 'vm-kube-state-metrics' },
63
+ },
64
+ {
65
+ id: 'rel-checkout',
66
+ relation: 'MONITORED_BY',
67
+ from: { type: 'service', id: 'svc-checkout' },
68
+ to: { type: 'resource', id: 'res-vm' },
69
+ attributes: { serviceName: 'checkout-api' },
70
+ },
71
+ ],
72
+ deployedAsRelationships: [],
73
+ services: [
74
+ { id: 'svc-exporter', name: 'vm-kube-state-metrics' },
75
+ { id: 'svc-checkout', name: 'checkout-api' },
76
+ ],
77
+ resources: [],
78
+ });
79
+ strict_1.default.deepEqual(candidates.map((candidate) => candidate.target.id), ['svc-checkout']);
80
+ });
81
+ (0, node_test_1.default)('victoriametrics kube workload labels outrank monitoring backend exporter service label', () => {
82
+ const result = (0, src_1.resolveAlertCorrelation)({
83
+ alertRef: {
84
+ ...baseRef,
85
+ provider: 'victoriametrics',
86
+ },
87
+ rawAlert: {
88
+ metric: {
89
+ service: 'vm-kube-state-metrics',
90
+ deployment: 'checkout-api',
91
+ pod: 'checkout-api-7bf9d9b8c8-v2j9x',
92
+ container: 'checkout',
93
+ namespace: 'prod',
94
+ },
95
+ },
96
+ topology: {
97
+ sourceResource: { id: 'res-vm', name: 'VictoriaMetrics', provider: 'victoriametrics' },
98
+ monitoredByRelationships: [
99
+ {
100
+ id: 'rel-exporter',
101
+ relation: 'MONITORED_BY',
102
+ from: { type: 'service', id: 'svc-exporter' },
103
+ to: { type: 'resource', id: 'res-vm' },
104
+ attributes: { serviceLabel: 'vm-kube-state-metrics' },
105
+ },
106
+ {
107
+ id: 'rel-checkout',
108
+ relation: 'MONITORED_BY',
109
+ from: { type: 'service', id: 'svc-checkout' },
110
+ to: { type: 'resource', id: 'res-vm' },
111
+ attributes: {
112
+ deploymentName: 'checkout-api',
113
+ containerName: 'checkout',
114
+ },
115
+ },
116
+ ],
117
+ deployedAsRelationships: [],
118
+ services: [
119
+ { id: 'svc-exporter', name: 'vm-kube-state-metrics' },
120
+ { id: 'svc-checkout', name: 'checkout-api' },
121
+ ],
122
+ resources: [],
123
+ },
124
+ });
125
+ strict_1.default.equal(result.candidates[0]?.target.id, 'svc-checkout');
126
+ strict_1.default.equal(result.decision.target?.id, 'svc-checkout');
127
+ });
128
+ (0, node_test_1.default)('victoriametrics trace facts include service, http, trace, span, and env labels', () => {
129
+ const facts = (0, src_1.extractAlertFacts)({
130
+ alertRef: {
131
+ ...baseRef,
132
+ provider: 'victoriametrics',
133
+ },
134
+ raw: {
135
+ metric: {
136
+ service_name: 'checkout-api',
137
+ http_route: '/checkout/:id',
138
+ http_status_code: 500,
139
+ http_method: 'POST',
140
+ trace_id: 'trace-123',
141
+ span_id: 'span-456',
142
+ span_kind: 'server',
143
+ env: 'prod',
144
+ },
145
+ },
146
+ });
147
+ strict_1.default.deepEqual(factValues(facts, 'service_name'), ['checkout-api']);
148
+ strict_1.default.deepEqual(factValues(facts, 'http_route'), ['/checkout/:id']);
149
+ strict_1.default.deepEqual(factValues(facts, 'http_status_code'), ['500']);
150
+ strict_1.default.deepEqual(factValues(facts, 'http_method'), ['POST']);
151
+ strict_1.default.deepEqual(factValues(facts, 'trace_id'), ['trace-123']);
152
+ strict_1.default.deepEqual(factValues(facts, 'span_id'), ['span-456']);
153
+ strict_1.default.deepEqual(factValues(facts, 'span_kind'), ['server']);
154
+ strict_1.default.deepEqual(factValues(facts, 'env'), ['prod']);
155
+ });
156
+ (0, node_test_1.default)('prometheus grouped alert extracts common and per-alert labels and annotations', () => {
157
+ const facts = (0, src_1.extractAlertFacts)({
158
+ alertRef: {
159
+ ...baseRef,
160
+ provider: 'prometheus',
161
+ },
162
+ raw: {
163
+ commonLabels: { alertname: 'HighLatency', service: 'checkout' },
164
+ commonAnnotations: { summary: 'Checkout latency is high' },
165
+ alerts: [
166
+ {
167
+ labels: { namespace: 'prod', pod: 'checkout-abc' },
168
+ annotations: { description: 'checkout pod is slow' },
169
+ },
170
+ {
171
+ labels: { namespace: 'prod', pod: 'checkout-def', service_name: 'checkout-api' },
172
+ annotations: { runbook_url: 'https://runbooks.example/checkout' },
173
+ },
174
+ ],
175
+ },
176
+ });
177
+ strict_1.default.ok(facts.labels.some((fact) => fact.key === 'service' && fact.sourcePath === 'raw.commonLabels.service'));
178
+ strict_1.default.ok(facts.labels.some((fact) => fact.key === 'pod' && fact.value === 'checkout-abc'));
179
+ strict_1.default.ok(facts.labels.some((fact) => fact.key === 'pod' && fact.value === 'checkout-def'));
180
+ strict_1.default.ok(facts.labels.some((fact) => fact.key === 'service_name' && fact.value === 'checkout-api'));
181
+ strict_1.default.ok(facts.textHints.some((fact) => fact.key === 'summary'));
182
+ strict_1.default.ok(facts.textHints.some((fact) => fact.key === 'description'));
183
+ strict_1.default.ok(facts.textHints.some((fact) => fact.key === 'runbook_url'));
184
+ });
185
+ (0, node_test_1.default)('prometheus extractor records rule query and evaluation facts', () => {
186
+ const facts = (0, src_1.extractAlertFacts)({
187
+ alertRef: {
188
+ ...baseRef,
189
+ provider: 'prometheus',
190
+ },
191
+ raw: {
192
+ rule: {
193
+ name: 'HighErrorRate',
194
+ query: 'sum(rate(http_requests_total{status=~"5.."}[5m]))',
195
+ },
196
+ expr: 'sum(rate(errors_total[5m])) > 1',
197
+ query: 'up == 0',
198
+ for: '5m',
199
+ activeAt: '2026-06-14T09:50:00.000Z',
200
+ lastEvaluation: '2026-06-14T09:54:00.000Z',
201
+ value: 12.3,
202
+ alertstate: 'firing',
203
+ },
204
+ });
205
+ for (const key of ['rule.name', 'rule.query', 'expr', 'query', 'for', 'activeAt', 'lastEvaluation', 'value', 'alertstate']) {
206
+ strict_1.default.ok(factValues(facts, key).length > 0, `missing ${key}`);
207
+ }
208
+ });
209
+ (0, node_test_1.default)('sentry extractor records issue and latest-event identity facts', () => {
210
+ const facts = (0, src_1.extractAlertFacts)({
211
+ alertRef: {
212
+ ...baseRef,
213
+ provider: 'sentry',
214
+ },
215
+ raw: {
216
+ id: 'issue-1',
217
+ shortId: 'CHECKOUT-12',
218
+ permalink: 'https://sentry.example/issues/1',
219
+ status: 'unresolved',
220
+ project: { slug: 'checkout-api' },
221
+ organization: { slug: 'scoutflo' },
222
+ metadata: { type: 'TypeError', value: 'Cannot read property', function: 'handleCheckout' },
223
+ platform: 'node',
224
+ sdk: { name: 'sentry.javascript.node', version: '8.0.0' },
225
+ latestEvent: {
226
+ eventID: 'event-1',
227
+ contexts: {
228
+ trace: {
229
+ trace_id: 'trace-123',
230
+ span_id: 'span-456',
231
+ },
232
+ },
233
+ release: { version: 'checkout@1.2.3', package: 'checkout' },
234
+ transaction: '/checkout/:id',
235
+ },
236
+ },
237
+ });
238
+ for (const key of [
239
+ 'issueId',
240
+ 'shortId',
241
+ 'shortIdPrefix',
242
+ 'permalink',
243
+ 'status',
244
+ 'projectSlug',
245
+ 'orgSlug',
246
+ 'metadata.type',
247
+ 'metadata.value',
248
+ 'metadata.function',
249
+ 'platform',
250
+ 'sdk.name',
251
+ 'sdk.version',
252
+ 'latestEvent.eventID',
253
+ 'trace_id',
254
+ 'span_id',
255
+ 'releaseVersion',
256
+ 'releasePackage',
257
+ 'transaction',
258
+ ]) {
259
+ strict_1.default.ok(factValues(facts, key).length > 0, `missing ${key}`);
260
+ }
261
+ });
262
+ //# sourceMappingURL=provider-hardening.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-hardening.test.js","sourceRoot":"","sources":["../../test/provider-hardening.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scoutflo/alert-correlation",
3
- "version": "0.1.0",
3
+ "version": "0.2.1",
4
4
  "description": "Pure alert-to-topology correlation contracts and policies for Scoutflo alert investigation workflows.",
5
5
  "main": "dist/src/index.js",
6
6
  "types": "dist/src/index.d.ts",
@@ -19,6 +19,7 @@
19
19
  "author": "Scoutflo",
20
20
  "license": "MIT",
21
21
  "dependencies": {
22
+ "@scoutflo/correlation-core": "0.1.0",
22
23
  "zod": "^3.23.8"
23
24
  },
24
25
  "devDependencies": {