@scoutflo/alert-correlation 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +81 -5
- package/dist/src/decision/decideTarget.js +6 -1
- package/dist/src/decision/decideTarget.js.map +1 -1
- package/dist/src/extractors/genericExtractor.d.ts +1 -1
- package/dist/src/extractors/genericExtractor.js +1 -1
- package/dist/src/extractors/prometheusExtractor.js +77 -2
- package/dist/src/extractors/prometheusExtractor.js.map +1 -1
- package/dist/src/extractors/sentryExtractor.js +134 -2
- package/dist/src/extractors/sentryExtractor.js.map +1 -1
- package/dist/src/matchers/providerRelationshipMatcher.d.ts +1 -1
- package/dist/src/matchers/providerRelationshipMatcher.js +29 -13
- package/dist/src/matchers/providerRelationshipMatcher.js.map +1 -1
- package/dist/test/provider-hardening.test.d.ts +1 -0
- package/dist/test/provider-hardening.test.js +262 -0
- package/dist/test/provider-hardening.test.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -6,29 +6,105 @@ This package intentionally owns only shared contracts, extraction, matching, sco
|
|
|
6
6
|
|
|
7
7
|
## Version
|
|
8
8
|
|
|
9
|
-
Current package version: `0.
|
|
9
|
+
Current package version: `0.2.0`.
|
|
10
10
|
|
|
11
11
|
Gateway and Voyager should consume the exact published version:
|
|
12
12
|
|
|
13
13
|
```json
|
|
14
|
-
"@scoutflo/alert-correlation": "0.
|
|
14
|
+
"@scoutflo/alert-correlation": "0.2.0"
|
|
15
15
|
```
|
|
16
16
|
|
|
17
17
|
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
18
|
|
|
19
|
-
##
|
|
19
|
+
## Correlation Semantics
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
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.
|
|
22
|
+
|
|
23
|
+
Important matching rules:
|
|
24
|
+
|
|
25
|
+
- `service_name` and `service` are distinct facts.
|
|
26
|
+
- Topology relationship attribute `serviceName` matches explicit service-name facts such as `service_name`, `serviceName`, and `service.name`.
|
|
27
|
+
- Topology relationship attribute `serviceLabel` matches generic Prometheus-style `service` labels.
|
|
28
|
+
- Workload ownership evidence such as `deployment`, `pod`, `container`, and `namespace` outranks monitoring backend exporter labels.
|
|
29
|
+
- 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.
|
|
30
|
+
- Prometheus-compatible extractors preserve grouped alert common labels/annotations and per-alert labels/annotations.
|
|
31
|
+
- Prometheus-compatible extractors include rule/query/evaluation facts such as `rule.name`, `rule.query`, `expr`, `query`, `for`, `activeAt`, `lastEvaluation`, `value`, and `alertstate`.
|
|
32
|
+
- The Sentry extractor includes issue, project/org, metadata, SDK, release, transaction, latest-event, and trace identity facts when present.
|
|
33
|
+
|
|
34
|
+
## Release Flow
|
|
35
|
+
|
|
36
|
+
Use this flow when releasing only `@scoutflo/alert-correlation`. Do not publish the root `@scoutflo/integration-sdk` package for an alert-correlation-only release.
|
|
37
|
+
|
|
38
|
+
### 1. Local Preflight
|
|
39
|
+
|
|
40
|
+
Run the package build, package tests, root SDK build, and package dry run:
|
|
22
41
|
|
|
23
42
|
```bash
|
|
24
43
|
npm run build --workspace @scoutflo/alert-correlation
|
|
25
44
|
npm test --workspace @scoutflo/alert-correlation
|
|
45
|
+
npm run build
|
|
46
|
+
npm pack --dry-run --workspace @scoutflo/alert-correlation
|
|
26
47
|
```
|
|
27
48
|
|
|
28
|
-
|
|
49
|
+
If local npm cache permissions fail during `npm pack --dry-run`, use a repo-local temporary cache instead of changing global cache ownership:
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
mkdir -p .tmp/npm-cache
|
|
53
|
+
npm_config_cache=.tmp/npm-cache npm pack --dry-run --workspace @scoutflo/alert-correlation
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### 2. Check The Registry
|
|
57
|
+
|
|
58
|
+
Before publishing, verify whether the exact version already exists:
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
npm view @scoutflo/alert-correlation@<version> version
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
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.
|
|
65
|
+
|
|
66
|
+
### 3. Publish This Workspace Only
|
|
67
|
+
|
|
68
|
+
Publish only the alert-correlation workspace:
|
|
29
69
|
|
|
30
70
|
```bash
|
|
31
71
|
npm publish --workspace @scoutflo/alert-correlation
|
|
32
72
|
```
|
|
33
73
|
|
|
74
|
+
Do not run `npm publish` from the repository root for this release.
|
|
75
|
+
|
|
76
|
+
### 4. Confirm The Published Version
|
|
77
|
+
|
|
78
|
+
After publish succeeds, confirm the exact version:
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
npm view @scoutflo/alert-correlation@<version> version
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
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.
|
|
85
|
+
|
|
86
|
+
### 5. Roll Out To Consumers
|
|
87
|
+
|
|
88
|
+
After the version is visible, update Gateway and Voyager from any local `file:` dependency to the exact published version, for example:
|
|
89
|
+
|
|
90
|
+
```json
|
|
91
|
+
"@scoutflo/alert-correlation": "0.2.0"
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
Run install and the relevant tests in each consumer repo after updating its dependency lockfile.
|
|
95
|
+
|
|
96
|
+
Open and merge PRs in dependency order:
|
|
97
|
+
|
|
98
|
+
1. `integration-sdk`
|
|
99
|
+
2. Gateway
|
|
100
|
+
3. Voyager
|
|
101
|
+
4. Client
|
|
102
|
+
|
|
103
|
+
### Safety Notes
|
|
104
|
+
|
|
105
|
+
- Do not commit `.npmrc`.
|
|
106
|
+
- Do not publish root `@scoutflo/integration-sdk` when releasing only alert correlation.
|
|
107
|
+
- Do not reuse a version after npm publish succeeds; bump the package version for any follow-up release.
|
|
108
|
+
- Do not move Gateway or Voyager from local `file:` dependencies until the published package is visible with `npm view`.
|
|
109
|
+
|
|
34
110
|
The package is configured for public npm publishing through its `publishConfig`.
|
|
@@ -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
|
-
|
|
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":";;;
|
|
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.
|
|
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.
|
|
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
|
-
...(
|
|
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
|
-
...(
|
|
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":";;;
|
|
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: '
|
|
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,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.
|
|
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.
|
|
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
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
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
|
|
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
|
|
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":";;;
|
|
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,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":";;;;;AAAA,gEAAwC;AACxC,0DAA6B;AAC7B,gCAKgB;AAEhB,MAAM,OAAO,GAAG;IACd,aAAa,EAAE,eAAe;IAC9B,QAAQ,EAAE,aAAa;IACvB,SAAS,EAAE,0BAA0B;IACrC,UAAU,EAAE,0BAA0B;CACvC,CAAC;AAEF,SAAS,UAAU,CAAC,KAA4B,EAAE,GAAW;IAC3D,OAAO;QACL,GAAG,KAAK,CAAC,MAAM;QACf,GAAG,KAAK,CAAC,WAAW;QACpB,GAAG,KAAK,CAAC,aAAa;QACtB,GAAG,KAAK,CAAC,SAAS;QAClB,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KACtC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACjE,CAAC;AAED,IAAA,mBAAI,EAAC,gDAAgD,EAAE,GAAG,EAAE;IAC1D,MAAM,KAAK,GAAG,IAAA,uBAAiB,EAAC;QAC9B,QAAQ,EAAE;YACR,GAAG,OAAO;YACV,QAAQ,EAAE,iBAAiB;SAC5B;QACD,GAAG,EAAE;YACH,MAAM,EAAE;gBACN,OAAO,EAAE,uBAAuB;gBAChC,YAAY,EAAE,cAAc;aAC7B;SACF;KACF,CAAC,CAAC;IAEH,gBAAM,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,uBAAuB,CAAC,CAAC,CAAC;IAC1E,gBAAM,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,cAAc,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;AACxE,CAAC,CAAC,CAAC;AAEH,IAAA,mBAAI,EAAC,mEAAmE,EAAE,GAAG,EAAE;IAC7E,MAAM,KAAK,GAAG,IAAA,uBAAiB,EAAC;QAC9B,QAAQ,EAAE;YACR,GAAG,OAAO;YACV,QAAQ,EAAE,iBAAiB;SAC5B;QACD,GAAG,EAAE;YACH,MAAM,EAAE;gBACN,OAAO,EAAE,uBAAuB;gBAChC,YAAY,EAAE,cAAc;aAC7B;SACF;KACF,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,IAAA,6BAAuB,EAAC,KAAK,EAAE;QAChD,cAAc,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,iBAAiB,EAAE;QACtF,wBAAwB,EAAE;YACxB;gBACE,EAAE,EAAE,cAAc;gBAClB,QAAQ,EAAE,cAAc;gBACxB,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,cAAc,EAAE;gBAC7C,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAE;gBACtC,UAAU,EAAE,EAAE,WAAW,EAAE,uBAAuB,EAAE;aACrD;YACD;gBACE,EAAE,EAAE,cAAc;gBAClB,QAAQ,EAAE,cAAc;gBACxB,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,cAAc,EAAE;gBAC7C,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAE;gBACtC,UAAU,EAAE,EAAE,WAAW,EAAE,cAAc,EAAE;aAC5C;SACF;QACD,uBAAuB,EAAE,EAAE;QAC3B,QAAQ,EAAE;YACR,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,uBAAuB,EAAE;YACrD,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,cAAc,EAAE;SAC7C;QACD,SAAS,EAAE,EAAE;KACd,CAAC,CAAC;IAEH,gBAAM,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;AACzF,CAAC,CAAC,CAAC;AAEH,IAAA,mBAAI,EAAC,wFAAwF,EAAE,GAAG,EAAE;IAClG,MAAM,MAAM,GAAG,IAAA,6BAAuB,EAAC;QACrC,QAAQ,EAAE;YACR,GAAG,OAAO;YACV,QAAQ,EAAE,iBAAiB;SAC5B;QACD,QAAQ,EAAE;YACR,MAAM,EAAE;gBACN,OAAO,EAAE,uBAAuB;gBAChC,UAAU,EAAE,cAAc;gBAC1B,GAAG,EAAE,+BAA+B;gBACpC,SAAS,EAAE,UAAU;gBACrB,SAAS,EAAE,MAAM;aAClB;SACF;QACD,QAAQ,EAAE;YACR,cAAc,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,iBAAiB,EAAE;YACtF,wBAAwB,EAAE;gBACxB;oBACE,EAAE,EAAE,cAAc;oBAClB,QAAQ,EAAE,cAAc;oBACxB,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,cAAc,EAAE;oBAC7C,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAE;oBACtC,UAAU,EAAE,EAAE,YAAY,EAAE,uBAAuB,EAAE;iBACtD;gBACD;oBACE,EAAE,EAAE,cAAc;oBAClB,QAAQ,EAAE,cAAc;oBACxB,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,cAAc,EAAE;oBAC7C,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAE;oBACtC,UAAU,EAAE;wBACV,cAAc,EAAE,cAAc;wBAC9B,aAAa,EAAE,UAAU;qBAC1B;iBACF;aACF;YACD,uBAAuB,EAAE,EAAE;YAC3B,QAAQ,EAAE;gBACR,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,uBAAuB,EAAE;gBACrD,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,cAAc,EAAE;aAC7C;YACD,SAAS,EAAE,EAAE;SACd;KACF,CAAC,CAAC;IAEH,gBAAM,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;IAC9D,gBAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,EAAE,cAAc,CAAC,CAAC;AAC3D,CAAC,CAAC,CAAC;AAEH,IAAA,mBAAI,EAAC,gFAAgF,EAAE,GAAG,EAAE;IAC1F,MAAM,KAAK,GAAG,IAAA,uBAAiB,EAAC;QAC9B,QAAQ,EAAE;YACR,GAAG,OAAO;YACV,QAAQ,EAAE,iBAAiB;SAC5B;QACD,GAAG,EAAE;YACH,MAAM,EAAE;gBACN,YAAY,EAAE,cAAc;gBAC5B,UAAU,EAAE,eAAe;gBAC3B,gBAAgB,EAAE,GAAG;gBACrB,WAAW,EAAE,MAAM;gBACnB,QAAQ,EAAE,WAAW;gBACrB,OAAO,EAAE,UAAU;gBACnB,SAAS,EAAE,QAAQ;gBACnB,GAAG,EAAE,MAAM;aACZ;SACF;KACF,CAAC,CAAC;IAEH,gBAAM,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,cAAc,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;IACtE,gBAAM,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,YAAY,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;IACrE,gBAAM,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,kBAAkB,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IACjE,gBAAM,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,aAAa,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7D,gBAAM,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAC/D,gBAAM,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAC7D,gBAAM,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,WAAW,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC7D,gBAAM,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;AACvD,CAAC,CAAC,CAAC;AAEH,IAAA,mBAAI,EAAC,+EAA+E,EAAE,GAAG,EAAE;IACzF,MAAM,KAAK,GAAG,IAAA,uBAAiB,EAAC;QAC9B,QAAQ,EAAE;YACR,GAAG,OAAO;YACV,QAAQ,EAAE,YAAY;SACvB;QACD,GAAG,EAAE;YACH,YAAY,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,UAAU,EAAE;YAC/D,iBAAiB,EAAE,EAAE,OAAO,EAAE,0BAA0B,EAAE;YAC1D,MAAM,EAAE;gBACN;oBACE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,cAAc,EAAE;oBAClD,WAAW,EAAE,EAAE,WAAW,EAAE,sBAAsB,EAAE;iBACrD;gBACD;oBACE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE;oBAChF,WAAW,EAAE,EAAE,WAAW,EAAE,mCAAmC,EAAE;iBAClE;aACF;SACF;KACF,CAAC,CAAC;IAEH,gBAAM,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,KAAK,0BAA0B,CAAC,CAAC,CAAC;IACjH,gBAAM,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,KAAK,cAAc,CAAC,CAAC,CAAC;IAC5F,gBAAM,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,KAAK,cAAc,CAAC,CAAC,CAAC;IAC5F,gBAAM,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,KAAK,cAAc,IAAI,IAAI,CAAC,KAAK,KAAK,cAAc,CAAC,CAAC,CAAC;IACrG,gBAAM,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC;IAClE,gBAAM,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,KAAK,aAAa,CAAC,CAAC,CAAC;IACtE,gBAAM,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,KAAK,aAAa,CAAC,CAAC,CAAC;AACxE,CAAC,CAAC,CAAC;AAEH,IAAA,mBAAI,EAAC,8DAA8D,EAAE,GAAG,EAAE;IACxE,MAAM,KAAK,GAAG,IAAA,uBAAiB,EAAC;QAC9B,QAAQ,EAAE;YACR,GAAG,OAAO;YACV,QAAQ,EAAE,YAAY;SACvB;QACD,GAAG,EAAE;YACH,IAAI,EAAE;gBACJ,IAAI,EAAE,eAAe;gBACrB,KAAK,EAAE,mDAAmD;aAC3D;YACD,IAAI,EAAE,iCAAiC;YACvC,KAAK,EAAE,SAAS;YAChB,GAAG,EAAE,IAAI;YACT,QAAQ,EAAE,0BAA0B;YACpC,cAAc,EAAE,0BAA0B;YAC1C,KAAK,EAAE,IAAI;YACX,UAAU,EAAE,QAAQ;SACrB;KACF,CAAC,CAAC;IAEH,KAAK,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,CAAC;QAC3H,gBAAM,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,WAAW,GAAG,EAAE,CAAC,CAAC;IACjE,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,IAAA,mBAAI,EAAC,gEAAgE,EAAE,GAAG,EAAE;IAC1E,MAAM,KAAK,GAAG,IAAA,uBAAiB,EAAC;QAC9B,QAAQ,EAAE;YACR,GAAG,OAAO;YACV,QAAQ,EAAE,QAAQ;SACnB;QACD,GAAG,EAAE;YACH,EAAE,EAAE,SAAS;YACb,OAAO,EAAE,aAAa;YACtB,SAAS,EAAE,iCAAiC;YAC5C,MAAM,EAAE,YAAY;YACpB,OAAO,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE;YACjC,YAAY,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;YAClC,QAAQ,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,sBAAsB,EAAE,QAAQ,EAAE,gBAAgB,EAAE;YAC1F,QAAQ,EAAE,MAAM;YAChB,GAAG,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAE,OAAO,EAAE,OAAO,EAAE;YACzD,WAAW,EAAE;gBACX,OAAO,EAAE,SAAS;gBAClB,QAAQ,EAAE;oBACR,KAAK,EAAE;wBACL,QAAQ,EAAE,WAAW;wBACrB,OAAO,EAAE,UAAU;qBACpB;iBACF;gBACD,OAAO,EAAE,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,UAAU,EAAE;gBAC3D,WAAW,EAAE,eAAe;aAC7B;SACF;KACF,CAAC,CAAC;IAEH,KAAK,MAAM,GAAG,IAAI;QAChB,SAAS;QACT,SAAS;QACT,eAAe;QACf,WAAW;QACX,QAAQ;QACR,aAAa;QACb,SAAS;QACT,eAAe;QACf,gBAAgB;QAChB,mBAAmB;QACnB,UAAU;QACV,UAAU;QACV,aAAa;QACb,qBAAqB;QACrB,UAAU;QACV,SAAS;QACT,gBAAgB;QAChB,gBAAgB;QAChB,aAAa;KACd,EAAE,CAAC;QACF,gBAAM,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,WAAW,GAAG,EAAE,CAAC,CAAC;IACjE,CAAC;AACH,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@scoutflo/alert-correlation",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
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",
|