@mergesignal/shared 0.8.2 → 0.9.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/dist/deriveScanNarrative.test.js +2 -2
- package/dist/fixtures/engineAbi4Fixtures.d.ts +16 -0
- package/dist/fixtures/engineAbi4Fixtures.d.ts.map +1 -0
- package/dist/fixtures/engineAbi4Fixtures.js +26 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/prRiskBand.d.ts +23 -0
- package/dist/prRiskBand.d.ts.map +1 -0
- package/dist/prRiskBand.js +66 -0
- package/dist/prRiskBand.test.d.ts +2 -0
- package/dist/prRiskBand.test.d.ts.map +1 -0
- package/dist/prRiskBand.test.js +57 -0
- package/dist/prRiskWire.d.ts +57 -0
- package/dist/prRiskWire.d.ts.map +1 -0
- package/dist/prRiskWire.js +98 -0
- package/dist/prRiskWire.test.d.ts +2 -0
- package/dist/prRiskWire.test.d.ts.map +1 -0
- package/dist/prRiskWire.test.js +106 -0
- package/dist/prRiskWiringRegression.test.d.ts +2 -0
- package/dist/prRiskWiringRegression.test.d.ts.map +1 -0
- package/dist/prRiskWiringRegression.test.js +102 -0
- package/dist/presentGitHubPrComment.d.ts.map +1 -1
- package/dist/presentGitHubPrComment.js +0 -1
- package/dist/presentation/dto/githubAndCliPresentation.d.ts +3 -0
- package/dist/presentation/dto/githubAndCliPresentation.d.ts.map +1 -1
- package/dist/presentation/dto/scanDetailsPresentation.d.ts +5 -2
- package/dist/presentation/dto/scanDetailsPresentation.d.ts.map +1 -1
- package/dist/presentation/fixtures/presentationPersonaFixtures.d.ts.map +1 -1
- package/dist/presentation/fixtures/presentationPersonaFixtures.js +5 -1
- package/dist/presentation/fixtures/scanResultFixtures.d.ts.map +1 -1
- package/dist/presentation/fixtures/scanResultFixtures.js +28 -17
- package/dist/presentation/orchestration/buildScanCardPresentation.d.ts +2 -1
- package/dist/presentation/orchestration/buildScanCardPresentation.d.ts.map +1 -1
- package/dist/presentation/orchestration/buildScanCardPresentation.js +7 -6
- package/dist/presentation/orchestration/buildScanDetailsPresentation.d.ts +1 -1
- package/dist/presentation/orchestration/buildScanDetailsPresentation.d.ts.map +1 -1
- package/dist/presentation/orchestration/buildScanDetailsPresentation.js +0 -1
- package/dist/presentation/orchestration/buildScanPresentationBundle.d.ts +0 -1
- package/dist/presentation/orchestration/buildScanPresentationBundle.d.ts.map +1 -1
- package/dist/presentation/presenters/presentCliScanSummary.d.ts.map +1 -1
- package/dist/presentation/presenters/presentCliScanSummary.js +9 -4
- package/dist/presentation/presenters/presentDashboardCard.d.ts.map +1 -1
- package/dist/presentation/presenters/presentDashboardCard.js +3 -2
- package/dist/presentation/presenters/presentGitHubCheckRun.d.ts.map +1 -1
- package/dist/presentation/presenters/presentGitHubCheckRun.js +10 -0
- package/dist/presentation/presenters/presentGitHubPrComment.d.ts.map +1 -1
- package/dist/presentation/presenters/presentGitHubPrComment.js +6 -0
- package/dist/presentation/presenters/presentScanDetails.d.ts.map +1 -1
- package/dist/presentation/presenters/presentScanDetails.js +46 -3
- package/dist/presentation/render/renderCliScanSummaryText.d.ts.map +1 -1
- package/dist/presentation/render/renderCliScanSummaryText.js +4 -1
- package/dist/productMessaging.d.ts +2 -2
- package/dist/productMessaging.d.ts.map +1 -1
- package/dist/productMessaging.js +3 -3
- package/dist/productMessaging.test.js +6 -6
- package/dist/resolvePipelineStatus.d.ts +4 -3
- package/dist/resolvePipelineStatus.d.ts.map +1 -1
- package/dist/resolvePipelineStatus.js +3 -3
- package/dist/riskSignals.d.ts +6 -6
- package/dist/riskSignals.d.ts.map +1 -1
- package/dist/riskSignals.js +9 -10
- package/dist/riskSignals.test.d.ts +2 -0
- package/dist/riskSignals.test.d.ts.map +1 -0
- package/dist/riskSignals.test.js +32 -0
- package/dist/riskVocabulary.js +7 -7
- package/dist/scanPresentationBundle.golden.test.js +4 -4
- package/dist/scanResultSchema.d.ts +42 -1
- package/dist/scanResultSchema.d.ts.map +1 -1
- package/dist/scanResultSchema.js +35 -2
- package/dist/scanResultSchema.test.js +15 -2
- package/dist/scanSurfaceCopy.d.ts +4 -2
- package/dist/scanSurfaceCopy.d.ts.map +1 -1
- package/dist/scanSurfaceCopy.js +4 -2
- package/dist/trustedScanGuards.test.js +3 -2
- package/dist/types.d.ts +15 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/formatCardExposureDisplay.d.ts +0 -22
- package/dist/formatCardExposureDisplay.d.ts.map +0 -1
- package/dist/formatCardExposureDisplay.js +0 -63
- package/dist/formatCardExposureDisplay.test.d.ts +0 -2
- package/dist/formatCardExposureDisplay.test.d.ts.map +0 -1
- package/dist/formatCardExposureDisplay.test.js +0 -44
package/dist/riskSignals.d.ts
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type PrRiskBand } from "./prRiskBand.js";
|
|
2
2
|
import type { ScanResult, ScoreLayer } from "./types.js";
|
|
3
3
|
export type RiskSignalLayer = {
|
|
4
4
|
layer: ScoreLayer;
|
|
5
5
|
score: number;
|
|
6
|
-
|
|
6
|
+
band: PrRiskBand;
|
|
7
7
|
};
|
|
8
|
-
/** Canonical
|
|
8
|
+
/** Canonical PR Risk classification for prRisk.score and layer scores. */
|
|
9
9
|
export type RiskSignals = {
|
|
10
10
|
riskIndex: number | null;
|
|
11
|
-
|
|
11
|
+
band: PrRiskBand | null;
|
|
12
12
|
layers: RiskSignalLayer[];
|
|
13
13
|
};
|
|
14
14
|
/**
|
|
15
|
-
* Single owner for
|
|
16
|
-
* Surfaces must consume `facts.riskSignals`
|
|
15
|
+
* Single owner for PR risk index + band classification.
|
|
16
|
+
* Surfaces must consume `facts.riskSignals` — do not re-derive bands.
|
|
17
17
|
*/
|
|
18
18
|
export declare function deriveRiskSignals(result: ScanResult): RiskSignals | null;
|
|
19
19
|
//# sourceMappingURL=riskSignals.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"riskSignals.d.ts","sourceRoot":"","sources":["../src/riskSignals.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"riskSignals.d.ts","sourceRoot":"","sources":["../src/riskSignals.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE/D,OAAO,KAAK,EAAe,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEtE,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,UAAU,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,UAAU,CAAC;CAClB,CAAC;AAEF,0EAA0E;AAC1E,MAAM,MAAM,WAAW,GAAG;IACxB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B,CAAC;AASF;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,UAAU,GAAG,WAAW,GAAG,IAAI,CAqBxE"}
|
package/dist/riskSignals.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { scoreToBand } from "./prRiskBand.js";
|
|
2
|
+
import { resolvePrRiskLayerScores, resolvePrRiskScore } from "./prRiskWire.js";
|
|
2
3
|
const LAYER_ORDER = [
|
|
3
4
|
"security",
|
|
4
5
|
"maintainability",
|
|
@@ -6,27 +7,25 @@ const LAYER_ORDER = [
|
|
|
6
7
|
"upgradeImpact",
|
|
7
8
|
];
|
|
8
9
|
/**
|
|
9
|
-
* Single owner for
|
|
10
|
-
* Surfaces must consume `facts.riskSignals`
|
|
10
|
+
* Single owner for PR risk index + band classification.
|
|
11
|
+
* Surfaces must consume `facts.riskSignals` — do not re-derive bands.
|
|
11
12
|
*/
|
|
12
13
|
export function deriveRiskSignals(result) {
|
|
13
|
-
const riskIndex =
|
|
14
|
-
|
|
15
|
-
: null;
|
|
16
|
-
const layerScores = result.layerScores;
|
|
14
|
+
const riskIndex = resolvePrRiskScore(result);
|
|
15
|
+
const layerScores = resolvePrRiskLayerScores(result);
|
|
17
16
|
if (riskIndex == null && layerScores == null) {
|
|
18
17
|
return null;
|
|
19
18
|
}
|
|
20
|
-
const
|
|
19
|
+
const band = scoreToBand(riskIndex);
|
|
21
20
|
const layers = layerScores
|
|
22
21
|
? LAYER_ORDER.map((layer) => {
|
|
23
22
|
const score = layerScores[layer];
|
|
24
23
|
return {
|
|
25
24
|
layer,
|
|
26
25
|
score,
|
|
27
|
-
|
|
26
|
+
band: scoreToBand(score) ?? "very_low",
|
|
28
27
|
};
|
|
29
28
|
})
|
|
30
29
|
: [];
|
|
31
|
-
return { riskIndex,
|
|
30
|
+
return { riskIndex, band, layers };
|
|
32
31
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"riskSignals.test.d.ts","sourceRoot":"","sources":["../src/riskSignals.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { deriveRiskSignals } from "./riskSignals.js";
|
|
3
|
+
import { resolveRepositoryHealthScore } from "./prRiskWire.js";
|
|
4
|
+
function baseResult(overrides = {}) {
|
|
5
|
+
return {
|
|
6
|
+
totalScore: 63,
|
|
7
|
+
layerScores: {
|
|
8
|
+
security: 10,
|
|
9
|
+
maintainability: 20,
|
|
10
|
+
ecosystem: 30,
|
|
11
|
+
upgradeImpact: 15,
|
|
12
|
+
},
|
|
13
|
+
findings: [],
|
|
14
|
+
generatedAt: "2026-01-01T00:00:00.000Z",
|
|
15
|
+
...overrides,
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
describe("deriveRiskSignals", () => {
|
|
19
|
+
it("prefers prRisk.score over totalScore and repositoryHealth", () => {
|
|
20
|
+
const result = baseResult({
|
|
21
|
+
prRisk: { score: 55 },
|
|
22
|
+
repositoryHealth: { totalScore: 63 },
|
|
23
|
+
totalScore: 63,
|
|
24
|
+
});
|
|
25
|
+
expect(deriveRiskSignals(result)?.riskIndex).toBe(55);
|
|
26
|
+
expect(resolveRepositoryHealthScore(result)).toBe(63);
|
|
27
|
+
});
|
|
28
|
+
it("falls back to totalScore when prRisk is missing (historical scans)", () => {
|
|
29
|
+
const result = baseResult({ totalScore: 48 });
|
|
30
|
+
expect(deriveRiskSignals(result)?.riskIndex).toBe(48);
|
|
31
|
+
});
|
|
32
|
+
});
|
package/dist/riskVocabulary.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { prRiskBandAriaFragment } from "./prRiskBand.js";
|
|
2
2
|
/** Canonical display strings for merge posture values. */
|
|
3
3
|
export const MERGE_POSTURE_LABEL = {
|
|
4
4
|
safe: "Safe",
|
|
@@ -44,17 +44,17 @@ export function mergePostureLabel(decision, fallback = "-") {
|
|
|
44
44
|
*/
|
|
45
45
|
export function ariaLabelForPosture(decision, score) {
|
|
46
46
|
const label = mergePostureLabel(decision);
|
|
47
|
-
const
|
|
48
|
-
if (
|
|
49
|
-
return `${label}, ${
|
|
47
|
+
const bandFragment = prRiskBandAriaFragment(score);
|
|
48
|
+
if (bandFragment)
|
|
49
|
+
return `${label}, ${bandFragment}`;
|
|
50
50
|
return label;
|
|
51
51
|
}
|
|
52
52
|
/** Accessible label for unified PR card findings block. */
|
|
53
53
|
export function ariaLabelForCardSummary(postureLabel, riskIndex, observations, supportingLine) {
|
|
54
54
|
const parts = [postureLabel];
|
|
55
|
-
const
|
|
56
|
-
if (
|
|
57
|
-
parts.push(
|
|
55
|
+
const bandFragment = prRiskBandAriaFragment(riskIndex);
|
|
56
|
+
if (bandFragment)
|
|
57
|
+
parts.push(bandFragment);
|
|
58
58
|
for (const obs of observations ?? []) {
|
|
59
59
|
if (obs?.trim())
|
|
60
60
|
parts.push(obs.trim());
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { describe, expect, it } from "vitest";
|
|
2
|
-
import {
|
|
2
|
+
import { scoreToBand } from "./prRiskBand.js";
|
|
3
3
|
import { buildScanPresentationBundle } from "./presentation/orchestration/buildScanPresentationBundle.js";
|
|
4
4
|
import { scanResultBullmq, scanResultEslint, scanResultFastifyRuntime, scanResultLimitedContext, scanResultMixedTypescriptFastify, scanResultPrettier, scanResultTypescriptPatch, scanResultVitest, } from "./presentation/fixtures/presentationPersonaFixtures.js";
|
|
5
5
|
const validationPersonas = [
|
|
@@ -42,7 +42,7 @@ describe("scanPresentationBundle golden — proof model", () => {
|
|
|
42
42
|
expect(apiArea?.hotspotPackages).toContain("fastify");
|
|
43
43
|
expect(apiArea?.verificationFocus.length).toBeGreaterThan(0);
|
|
44
44
|
expect(facts.riskSignals?.riskIndex).toBe(55);
|
|
45
|
-
expect(facts.riskSignals?.
|
|
45
|
+
expect(facts.riskSignals?.band).toBe(scoreToBand(55));
|
|
46
46
|
expect(facts.riskIndex).toBe(facts.riskSignals?.riskIndex);
|
|
47
47
|
});
|
|
48
48
|
it("limited-context — diagnostics without synthetic confidence", () => {
|
|
@@ -58,8 +58,8 @@ describe("scanPresentationBundle golden — proof model", () => {
|
|
|
58
58
|
const { facts } = bundle;
|
|
59
59
|
expect(facts.availability.corpusGateReason).toBe("ok");
|
|
60
60
|
expect(facts.packageSemantics?.dependencyClass).toBe("tooling");
|
|
61
|
-
expect(facts.riskSignals?.riskIndex).toBe(
|
|
62
|
-
expect(facts.riskSignals?.
|
|
61
|
+
expect(facts.riskSignals?.riskIndex).toBe(30);
|
|
62
|
+
expect(facts.riskSignals?.band).toBe(scoreToBand(30));
|
|
63
63
|
});
|
|
64
64
|
it("affected areas always carry linkage arrays (structure)", () => {
|
|
65
65
|
for (const { result } of validationPersonas) {
|
|
@@ -3,7 +3,12 @@ import type { EngineEmittedScanResult, ScanResult } from "./types.js";
|
|
|
3
3
|
/** Bump when persisted `result` JSON validation rules change materially (relaxed / legacy-tolerant). */
|
|
4
4
|
export declare const SCAN_RESULT_ABI: "2";
|
|
5
5
|
/** Bump when strict fresh-engine-output validation rules change materially. */
|
|
6
|
-
export declare const ENGINE_OUTPUT_SCAN_ABI: "
|
|
6
|
+
export declare const ENGINE_OUTPUT_SCAN_ABI: "4";
|
|
7
|
+
/**
|
|
8
|
+
* Synthesize ABI-4 prRisk/repositoryHealth from legacy totalScore when an engine
|
|
9
|
+
* has not yet adopted the dual-score wire (transitional bridge).
|
|
10
|
+
*/
|
|
11
|
+
export declare function normalizeEngineOutputAbi4(raw: unknown): unknown;
|
|
7
12
|
/**
|
|
8
13
|
* Minimum structural invariants for **persisted** `scans.result` JSON and legacy reads.
|
|
9
14
|
* `methodologyVersion` stays optional so historical rows without it remain valid.
|
|
@@ -17,6 +22,24 @@ export declare const scanResultSchema: z.ZodObject<{
|
|
|
17
22
|
ecosystem: z.ZodNumber;
|
|
18
23
|
upgradeImpact: z.ZodNumber;
|
|
19
24
|
}, z.core.$strip>;
|
|
25
|
+
prRisk: z.ZodOptional<z.ZodObject<{
|
|
26
|
+
score: z.ZodNumber;
|
|
27
|
+
layerScores: z.ZodOptional<z.ZodObject<{
|
|
28
|
+
security: z.ZodNumber;
|
|
29
|
+
maintainability: z.ZodNumber;
|
|
30
|
+
ecosystem: z.ZodNumber;
|
|
31
|
+
upgradeImpact: z.ZodNumber;
|
|
32
|
+
}, z.core.$strip>>;
|
|
33
|
+
}, z.core.$strip>>;
|
|
34
|
+
repositoryHealth: z.ZodOptional<z.ZodObject<{
|
|
35
|
+
totalScore: z.ZodNumber;
|
|
36
|
+
layerScores: z.ZodOptional<z.ZodObject<{
|
|
37
|
+
security: z.ZodNumber;
|
|
38
|
+
maintainability: z.ZodNumber;
|
|
39
|
+
ecosystem: z.ZodNumber;
|
|
40
|
+
upgradeImpact: z.ZodNumber;
|
|
41
|
+
}, z.core.$strip>>;
|
|
42
|
+
}, z.core.$strip>>;
|
|
20
43
|
findings: z.ZodPipe<z.ZodOptional<z.ZodUnion<readonly [z.ZodArray<z.ZodUnknown>, z.ZodNull]>>, z.ZodTransform<unknown[], unknown[] | null | undefined>>;
|
|
21
44
|
methodologyVersion: z.ZodOptional<z.ZodString>;
|
|
22
45
|
confidence: z.ZodOptional<z.ZodEnum<{
|
|
@@ -210,6 +233,24 @@ export declare const engineOutputScanResultSchema: z.ZodObject<{
|
|
|
210
233
|
}>;
|
|
211
234
|
}, z.core.$strip>;
|
|
212
235
|
}, z.core.$strip>;
|
|
236
|
+
prRisk: z.ZodObject<{
|
|
237
|
+
score: z.ZodNumber;
|
|
238
|
+
layerScores: z.ZodOptional<z.ZodObject<{
|
|
239
|
+
security: z.ZodNumber;
|
|
240
|
+
maintainability: z.ZodNumber;
|
|
241
|
+
ecosystem: z.ZodNumber;
|
|
242
|
+
upgradeImpact: z.ZodNumber;
|
|
243
|
+
}, z.core.$strip>>;
|
|
244
|
+
}, z.core.$strip>;
|
|
245
|
+
repositoryHealth: z.ZodObject<{
|
|
246
|
+
totalScore: z.ZodNumber;
|
|
247
|
+
layerScores: z.ZodOptional<z.ZodObject<{
|
|
248
|
+
security: z.ZodNumber;
|
|
249
|
+
maintainability: z.ZodNumber;
|
|
250
|
+
ecosystem: z.ZodNumber;
|
|
251
|
+
upgradeImpact: z.ZodNumber;
|
|
252
|
+
}, z.core.$strip>>;
|
|
253
|
+
}, z.core.$strip>;
|
|
213
254
|
}, z.core.$loose>;
|
|
214
255
|
export type EngineOutputScanResultParseFailure = {
|
|
215
256
|
ok: false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scanResultSchema.d.ts","sourceRoot":"","sources":["../src/scanResultSchema.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,uBAAuB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEtE,wGAAwG;AACxG,eAAO,MAAM,eAAe,EAAG,GAAY,CAAC;AAE5C,+EAA+E;AAC/E,eAAO,MAAM,sBAAsB,EAAG,GAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"scanResultSchema.d.ts","sourceRoot":"","sources":["../src/scanResultSchema.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,uBAAuB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEtE,wGAAwG;AACxG,eAAO,MAAM,eAAe,EAAG,GAAY,CAAC;AAE5C,+EAA+E;AAC/E,eAAO,MAAM,sBAAsB,EAAG,GAAY,CAAC;AAmBnD;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAc/D;AAED;;;;GAIG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA8Bb,CAAC;AAUjB;;;GAGG;AACH,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAMvC,CAAC;AAEH,MAAM,MAAM,kCAAkC,GAAG;IAC/C,EAAE,EAAE,KAAK,CAAC;IACV,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,kCAAkC,GAAG;IAC/C,EAAE,EAAE,IAAI,CAAC;IACT,MAAM,EAAE,uBAAuB,CAAC;CACjC,CAAC;AAEF,wBAAgB,+BAA+B,CAC7C,IAAI,EAAE,OAAO,GACZ,kCAAkC,GAAG,kCAAkC,CAezE;AAED,uFAAuF;AACvF,wBAAgB,kCAAkC,CAChD,IAAI,EAAE,OAAO,GACZ,uBAAuB,CAMzB;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,EAAE,EAAE,KAAK,CAAC;IACV,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,EAAE,EAAE,IAAI,CAAC;IACT,MAAM,EAAE,UAAU,CAAC;CACpB,CAAC;AAEF,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,OAAO,GACZ,sBAAsB,GAAG,sBAAsB,CAajD;AAED,yEAAyE;AACzE,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,OAAO,GAAG,UAAU,CAMhE"}
|
package/dist/scanResultSchema.js
CHANGED
|
@@ -3,13 +3,42 @@ import { z } from "zod";
|
|
|
3
3
|
/** Bump when persisted `result` JSON validation rules change materially (relaxed / legacy-tolerant). */
|
|
4
4
|
export const SCAN_RESULT_ABI = "2";
|
|
5
5
|
/** Bump when strict fresh-engine-output validation rules change materially. */
|
|
6
|
-
export const ENGINE_OUTPUT_SCAN_ABI = "
|
|
6
|
+
export const ENGINE_OUTPUT_SCAN_ABI = "4";
|
|
7
7
|
const layerScoresSchema = z.object({
|
|
8
8
|
security: z.number(),
|
|
9
9
|
maintainability: z.number(),
|
|
10
10
|
ecosystem: z.number(),
|
|
11
11
|
upgradeImpact: z.number(),
|
|
12
12
|
});
|
|
13
|
+
const prRiskSchema = z.object({
|
|
14
|
+
score: z.number().min(0).max(100),
|
|
15
|
+
layerScores: layerScoresSchema.optional(),
|
|
16
|
+
});
|
|
17
|
+
const repositoryHealthSchema = z.object({
|
|
18
|
+
totalScore: z.number().min(0).max(100),
|
|
19
|
+
layerScores: layerScoresSchema.optional(),
|
|
20
|
+
});
|
|
21
|
+
/**
|
|
22
|
+
* Synthesize ABI-4 prRisk/repositoryHealth from legacy totalScore when an engine
|
|
23
|
+
* has not yet adopted the dual-score wire (transitional bridge).
|
|
24
|
+
*/
|
|
25
|
+
export function normalizeEngineOutputAbi4(raw) {
|
|
26
|
+
if (!raw || typeof raw !== "object")
|
|
27
|
+
return raw;
|
|
28
|
+
const obj = raw;
|
|
29
|
+
const totalScore = obj.totalScore;
|
|
30
|
+
const layerScores = obj.layerScores;
|
|
31
|
+
if (typeof totalScore !== "number" || !Number.isFinite(totalScore)) {
|
|
32
|
+
return raw;
|
|
33
|
+
}
|
|
34
|
+
if (!layerScores || typeof layerScores !== "object")
|
|
35
|
+
return raw;
|
|
36
|
+
return {
|
|
37
|
+
...obj,
|
|
38
|
+
prRisk: obj.prRisk ?? { score: totalScore, layerScores },
|
|
39
|
+
repositoryHealth: obj.repositoryHealth ?? { totalScore, layerScores },
|
|
40
|
+
};
|
|
41
|
+
}
|
|
13
42
|
/**
|
|
14
43
|
* Minimum structural invariants for **persisted** `scans.result` JSON and legacy reads.
|
|
15
44
|
* `methodologyVersion` stays optional so historical rows without it remain valid.
|
|
@@ -19,6 +48,8 @@ export const scanResultSchema = z
|
|
|
19
48
|
.object({
|
|
20
49
|
totalScore: z.number().min(0).max(100),
|
|
21
50
|
layerScores: layerScoresSchema,
|
|
51
|
+
prRisk: prRiskSchema.optional(),
|
|
52
|
+
repositoryHealth: repositoryHealthSchema.optional(),
|
|
22
53
|
findings: z
|
|
23
54
|
.union([z.array(z.unknown()), z.null()])
|
|
24
55
|
.optional()
|
|
@@ -59,9 +90,11 @@ export const engineOutputScanResultSchema = scanResultSchema.extend({
|
|
|
59
90
|
methodologyVersion: z.string().trim().min(1),
|
|
60
91
|
generatedAt: engineOutputGeneratedAtSchema,
|
|
61
92
|
assessment: assessmentSchema,
|
|
93
|
+
prRisk: prRiskSchema,
|
|
94
|
+
repositoryHealth: repositoryHealthSchema,
|
|
62
95
|
});
|
|
63
96
|
export function safeParseEngineOutputScanResult(data) {
|
|
64
|
-
const parsed = engineOutputScanResultSchema.safeParse(data);
|
|
97
|
+
const parsed = engineOutputScanResultSchema.safeParse(normalizeEngineOutputAbi4(data));
|
|
65
98
|
if (!parsed.success) {
|
|
66
99
|
const issues = parsed.error.issues.map((i) => `${i.path.join(".") || "(root)"}: ${i.message}`);
|
|
67
100
|
return {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { describe, it, expect } from "vitest";
|
|
2
2
|
import { safeParseScanResult, parseScanResultOrThrow, scanResultSchema, safeParseEngineOutputScanResult, parseEngineOutputScanResultOrThrow, } from "./scanResultSchema.js";
|
|
3
3
|
import { emptyReachScope, emptyVerificationScope, minimalReviewFocalPoint, } from "./fixtures/assessmentScopeFixtures.js";
|
|
4
|
+
import { withAbi4EngineScores } from "./fixtures/engineAbi4Fixtures.js";
|
|
4
5
|
const minimalValid = {
|
|
5
6
|
totalScore: 42,
|
|
6
7
|
layerScores: {
|
|
@@ -97,11 +98,11 @@ const minimalAssessment = {
|
|
|
97
98
|
},
|
|
98
99
|
};
|
|
99
100
|
describe("engineOutputScanResultSchema (strict, fresh engine only)", () => {
|
|
100
|
-
const withMethodology = {
|
|
101
|
+
const withMethodology = withAbi4EngineScores({
|
|
101
102
|
...minimalValid,
|
|
102
103
|
methodologyVersion: "engine-test-fixture/v1",
|
|
103
104
|
assessment: minimalAssessment,
|
|
104
|
-
};
|
|
105
|
+
});
|
|
105
106
|
it("rejects payload that relaxed parser accepts when methodology is missing", () => {
|
|
106
107
|
const r = safeParseEngineOutputScanResult(minimalValid);
|
|
107
108
|
expect(r.ok).toBe(false);
|
|
@@ -112,6 +113,18 @@ describe("engineOutputScanResultSchema (strict, fresh engine only)", () => {
|
|
|
112
113
|
if (r.ok)
|
|
113
114
|
expect(r.result.methodologyVersion).toBe("engine-test-fixture/v1");
|
|
114
115
|
});
|
|
116
|
+
it("synthesizes prRisk/repositoryHealth from totalScore for legacy engines", () => {
|
|
117
|
+
const r = safeParseEngineOutputScanResult({
|
|
118
|
+
...minimalValid,
|
|
119
|
+
methodologyVersion: "acme-prod/v1",
|
|
120
|
+
assessment: minimalAssessment,
|
|
121
|
+
});
|
|
122
|
+
expect(r.ok).toBe(true);
|
|
123
|
+
if (r.ok) {
|
|
124
|
+
expect(r.result.prRisk?.score).toBe(42);
|
|
125
|
+
expect(r.result.repositoryHealth?.totalScore).toBe(42);
|
|
126
|
+
}
|
|
127
|
+
});
|
|
115
128
|
it("parseEngineOutputScanResultOrThrow throws with validation prefix", () => {
|
|
116
129
|
expect(() => parseEngineOutputScanResultOrThrow(minimalValid)).toThrow(/^validation:/);
|
|
117
130
|
});
|
|
@@ -39,8 +39,10 @@ export declare const scanSurfaceCopy: {
|
|
|
39
39
|
readonly trustedWorkflowCredentialHintBody: "The engine checkout token was not available to this workflow run. Add it under this repository's Actions secrets, or grant this repository access to an organization secret. Secrets that exist only on a GitHub Environment are not available here unless this job declares that environment.";
|
|
40
40
|
/** Trusted step summary H1 product line (before posture | risk index). */
|
|
41
41
|
readonly trustedStepSummaryTitlePrefix: "MergeSignal dependency review";
|
|
42
|
-
/**
|
|
43
|
-
readonly
|
|
42
|
+
/** PR Risk score line for CLI / Actions summary. */
|
|
43
|
+
readonly prRiskScoreLabel: "PR Risk score";
|
|
44
|
+
/** GitHub Actions step summary: PR risk score direction (shared with web/CLI where imported). */
|
|
45
|
+
readonly prRiskScoreDirectionShort: "0 = lowest PR risk, 100 = highest PR risk";
|
|
44
46
|
/** When `decision` is missing on scan JSON (legacy output). */
|
|
45
47
|
readonly mergePostureUnavailableShort: "Posture unavailable";
|
|
46
48
|
readonly mergePostureUnavailableDetail: "This scan did not include a merge posture verdict; use the risk index as a coarse signal only.";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scanSurfaceCopy.d.ts","sourceRoot":"","sources":["../src/scanSurfaceCopy.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;QAoBxB,8EAA8E;;QAG9E,6DAA6D;;;;QAO7D,qDAAqD;;;;;QASrD,mEAAmE;;;;QAOnE,yFAAyF;;QAGzF,mFAAmF;;QAGnF,4EAA4E;;QAE5E,
|
|
1
|
+
{"version":3,"file":"scanSurfaceCopy.d.ts","sourceRoot":"","sources":["../src/scanSurfaceCopy.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;QAoBxB,8EAA8E;;QAG9E,6DAA6D;;;;QAO7D,qDAAqD;;;;;QASrD,mEAAmE;;;;QAOnE,yFAAyF;;QAGzF,mFAAmF;;QAGnF,4EAA4E;;QAE5E,oDAAoD;;QAEpD,iGAAiG;;QAEjG,+DAA+D;;;QAI/D,6EAA6E;;;;;QAK7E,2CAA2C;;;QAK3C,2EAA2E;;QAE3E,4EAA4E;;;QAI5E,sEAAsE;;;IAGxE,2EAA2E;;;;;;;;;;;;;;QAiBzE,oEAAoE;;;IAGtE,wEAAwE;;;;;;QAOtE,2CAA2C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAkCzC,yDAAyD;;YAGzD,mDAAmD;;YAGnD,8BAA8B;;YAE9B,oDAAoD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA4CtD,6CAA6C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAsI/C,uFAAuF;;;;;;;;;;;;;;;;;;;;;;;;IAwBvF,kFAAkF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAuClF,sEAAsE;;;;;CAO9D,CAAC;AAEX,iEAAiE;AACjE,wBAAgB,mBAAmB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAa5D"}
|
package/dist/scanSurfaceCopy.js
CHANGED
|
@@ -39,8 +39,10 @@ export const scanSurfaceCopy = {
|
|
|
39
39
|
trustedWorkflowCredentialHintBody: "The engine checkout token was not available to this workflow run. Add it under this repository's Actions secrets, or grant this repository access to an organization secret. Secrets that exist only on a GitHub Environment are not available here unless this job declares that environment.",
|
|
40
40
|
/** Trusted step summary H1 product line (before posture | risk index). */
|
|
41
41
|
trustedStepSummaryTitlePrefix: "MergeSignal dependency review",
|
|
42
|
-
/**
|
|
43
|
-
|
|
42
|
+
/** PR Risk score line for CLI / Actions summary. */
|
|
43
|
+
prRiskScoreLabel: "PR Risk score",
|
|
44
|
+
/** GitHub Actions step summary: PR risk score direction (shared with web/CLI where imported). */
|
|
45
|
+
prRiskScoreDirectionShort: "0 = lowest PR risk, 100 = highest PR risk",
|
|
44
46
|
/** When `decision` is missing on scan JSON (legacy output). */
|
|
45
47
|
mergePostureUnavailableShort: "Posture unavailable",
|
|
46
48
|
mergePostureUnavailableDetail: "This scan did not include a merge posture verdict; use the risk index as a coarse signal only.",
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { describe, it, expect, beforeEach, afterEach } from "vitest";
|
|
2
2
|
import { assertTrustedActionsSummaryAllowed, assertTrustedScanResult, auditTrustedActionsOutput, isStubMethodologyVersion, trustedActionsSummaryDenylistPhrases, validateTrustedEngineScanResult, } from "./trustedScanGuards.js";
|
|
3
3
|
import { assessmentStub } from "./fixtures/assessmentFixtures.js";
|
|
4
|
+
import { withAbi4EngineScores } from "./fixtures/engineAbi4Fixtures.js";
|
|
4
5
|
import { scanSurfaceCopy } from "./scanSurfaceCopy.js";
|
|
5
|
-
const baseResult = {
|
|
6
|
+
const baseResult = withAbi4EngineScores({
|
|
6
7
|
totalScore: 10,
|
|
7
8
|
layerScores: {
|
|
8
9
|
security: 10,
|
|
@@ -20,7 +21,7 @@ const baseResult = {
|
|
|
20
21
|
confidence: "low",
|
|
21
22
|
reasoning: ["Stub engine cannot perform real analysis"],
|
|
22
23
|
},
|
|
23
|
-
};
|
|
24
|
+
});
|
|
24
25
|
describe("trustedScanGuards", () => {
|
|
25
26
|
it("detects stub methodology", () => {
|
|
26
27
|
expect(isStubMethodologyVersion("engine-stub/v2")).toBe(true);
|
package/dist/types.d.ts
CHANGED
|
@@ -5,6 +5,16 @@ export type LayerScores = {
|
|
|
5
5
|
ecosystem: number;
|
|
6
6
|
upgradeImpact: number;
|
|
7
7
|
};
|
|
8
|
+
/** Engine-emitted PR-scoped risk score (ABI 4+). */
|
|
9
|
+
export type PrRiskWire = {
|
|
10
|
+
score: number;
|
|
11
|
+
layerScores?: LayerScores;
|
|
12
|
+
};
|
|
13
|
+
/** Engine-emitted repository health score (ABI 4+). */
|
|
14
|
+
export type RepositoryHealthWire = {
|
|
15
|
+
totalScore: number;
|
|
16
|
+
layerScores?: LayerScores;
|
|
17
|
+
};
|
|
8
18
|
export type FindingSeverity = "low" | "medium" | "high" | "critical";
|
|
9
19
|
/**
|
|
10
20
|
* Producer-authored classification for {@link Finding}. Prefer this over inferring from `id` strings.
|
|
@@ -251,8 +261,13 @@ export type EngineeringTrace = {
|
|
|
251
261
|
analyzerContributions: Readonly<Record<string, number>>;
|
|
252
262
|
};
|
|
253
263
|
export type ScanResult = {
|
|
264
|
+
/** Legacy composite score — historical fallback only; not PR Risk authority on ABI-4 output. */
|
|
254
265
|
totalScore: number;
|
|
255
266
|
layerScores: LayerScores;
|
|
267
|
+
/** PR Risk authority on ABI-4 engine output. */
|
|
268
|
+
prRisk?: PrRiskWire;
|
|
269
|
+
/** Repository health authority on ABI-4 engine output. */
|
|
270
|
+
repositoryHealth?: RepositoryHealthWire;
|
|
256
271
|
findings: Finding[];
|
|
257
272
|
methodologyVersion?: string;
|
|
258
273
|
/** Assessment Contract — sole authority for posture and presentation intensity. */
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Canonical exposure bucket thresholds for numeric risk scores (0–100).
|
|
3
|
-
* Consumed by `deriveRiskSignals` for bundle facts; label formatters remain for aria copy.
|
|
4
|
-
*/
|
|
5
|
-
export type CardExposureCategory = "minimal" | "limited" | "moderate" | "elevated" | "broad";
|
|
6
|
-
export type CardExposureDisplay = {
|
|
7
|
-
category: CardExposureCategory;
|
|
8
|
-
/** User-facing label, e.g. "Moderate exposure". */
|
|
9
|
-
label: string;
|
|
10
|
-
value: number;
|
|
11
|
-
};
|
|
12
|
-
/** User-facing exposure labels for docs and UI copy (low → high). */
|
|
13
|
-
export declare const CARD_EXPOSURE_CATEGORY_LABELS: readonly string[];
|
|
14
|
-
/** Map numeric score to a fixed exposure category (canonical thresholds). */
|
|
15
|
-
export declare function deriveCardExposureCategory(score: number | null | undefined): CardExposureCategory | null;
|
|
16
|
-
/** Map numeric totalScore to exposure category + display label. */
|
|
17
|
-
export declare function deriveCardExposureDisplay(score: number | null | undefined): CardExposureDisplay | null;
|
|
18
|
-
/** Compact card line: exposure category label only. */
|
|
19
|
-
export declare function formatCardExposureLine(score: number | null | undefined): string | null;
|
|
20
|
-
/** Fragment for composite aria labels on PR cards. */
|
|
21
|
-
export declare function exposureAriaFragment(score: number | null | undefined): string | null;
|
|
22
|
-
//# sourceMappingURL=formatCardExposureDisplay.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"formatCardExposureDisplay.d.ts","sourceRoot":"","sources":["../src/formatCardExposureDisplay.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,oBAAoB,GAC5B,SAAS,GACT,SAAS,GACT,UAAU,GACV,UAAU,GACV,OAAO,CAAC;AAEZ,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,mDAAmD;IACnD,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAUF,qEAAqE;AACrE,eAAO,MAAM,6BAA6B,EAAE,SAAS,MAAM,EAM1D,CAAC;AAkBF,6EAA6E;AAC7E,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC/B,oBAAoB,GAAG,IAAI,CAK7B;AAED,mEAAmE;AACnE,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC/B,mBAAmB,GAAG,IAAI,CAK5B;AAED,uDAAuD;AACvD,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC/B,MAAM,GAAG,IAAI,CAIf;AAED,sDAAsD;AACtD,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC/B,MAAM,GAAG,IAAI,CAIf"}
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Canonical exposure bucket thresholds for numeric risk scores (0–100).
|
|
3
|
-
* Consumed by `deriveRiskSignals` for bundle facts; label formatters remain for aria copy.
|
|
4
|
-
*/
|
|
5
|
-
const EXPOSURE_LABEL = {
|
|
6
|
-
minimal: "Minimal exposure",
|
|
7
|
-
limited: "Limited exposure",
|
|
8
|
-
moderate: "Moderate exposure",
|
|
9
|
-
elevated: "Elevated exposure",
|
|
10
|
-
broad: "Broad exposure",
|
|
11
|
-
};
|
|
12
|
-
/** User-facing exposure labels for docs and UI copy (low → high). */
|
|
13
|
-
export const CARD_EXPOSURE_CATEGORY_LABELS = [
|
|
14
|
-
EXPOSURE_LABEL.minimal,
|
|
15
|
-
EXPOSURE_LABEL.limited,
|
|
16
|
-
EXPOSURE_LABEL.moderate,
|
|
17
|
-
EXPOSURE_LABEL.elevated,
|
|
18
|
-
EXPOSURE_LABEL.broad,
|
|
19
|
-
];
|
|
20
|
-
/** Inclusive upper bounds (0–100). Five stable buckets only. */
|
|
21
|
-
const EXPOSURE_UPPER_BOUND = [24, 44, 74, 89, 100];
|
|
22
|
-
const EXPOSURE_ORDER = [
|
|
23
|
-
"minimal",
|
|
24
|
-
"limited",
|
|
25
|
-
"moderate",
|
|
26
|
-
"elevated",
|
|
27
|
-
"broad",
|
|
28
|
-
];
|
|
29
|
-
function clampScore(score) {
|
|
30
|
-
if (!Number.isFinite(score))
|
|
31
|
-
return 0;
|
|
32
|
-
return Math.min(100, Math.max(0, Math.round(score)));
|
|
33
|
-
}
|
|
34
|
-
/** Map numeric score to a fixed exposure category (canonical thresholds). */
|
|
35
|
-
export function deriveCardExposureCategory(score) {
|
|
36
|
-
if (score == null || !Number.isFinite(score))
|
|
37
|
-
return null;
|
|
38
|
-
const value = clampScore(score);
|
|
39
|
-
const idx = EXPOSURE_UPPER_BOUND.findIndex((bound) => value <= bound);
|
|
40
|
-
return EXPOSURE_ORDER[idx >= 0 ? idx : EXPOSURE_ORDER.length - 1];
|
|
41
|
-
}
|
|
42
|
-
/** Map numeric totalScore to exposure category + display label. */
|
|
43
|
-
export function deriveCardExposureDisplay(score) {
|
|
44
|
-
const category = deriveCardExposureCategory(score);
|
|
45
|
-
if (category == null)
|
|
46
|
-
return null;
|
|
47
|
-
const value = clampScore(score);
|
|
48
|
-
return { category, label: EXPOSURE_LABEL[category], value };
|
|
49
|
-
}
|
|
50
|
-
/** Compact card line: exposure category label only. */
|
|
51
|
-
export function formatCardExposureLine(score) {
|
|
52
|
-
const display = deriveCardExposureDisplay(score);
|
|
53
|
-
if (!display)
|
|
54
|
-
return null;
|
|
55
|
-
return display.label;
|
|
56
|
-
}
|
|
57
|
-
/** Fragment for composite aria labels on PR cards. */
|
|
58
|
-
export function exposureAriaFragment(score) {
|
|
59
|
-
const display = deriveCardExposureDisplay(score);
|
|
60
|
-
if (!display)
|
|
61
|
-
return null;
|
|
62
|
-
return display.label;
|
|
63
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"formatCardExposureDisplay.test.d.ts","sourceRoot":"","sources":["../src/formatCardExposureDisplay.test.ts"],"names":[],"mappings":""}
|