@mergesignal/shared 0.12.3 → 0.13.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/dist/assessment/authoredCommunication.d.ts +30 -0
- package/dist/assessment/authoredCommunication.d.ts.map +1 -0
- package/dist/assessment/authoredCommunication.js +18 -0
- package/dist/assessment/index.d.ts +6 -0
- package/dist/assessment/index.d.ts.map +1 -0
- package/dist/assessment/index.js +5 -0
- package/dist/assessment/literals.d.ts +44 -0
- package/dist/assessment/literals.d.ts.map +1 -0
- package/dist/assessment/literals.js +140 -0
- package/dist/assessment/schema.d.ts +311 -0
- package/dist/assessment/schema.d.ts.map +1 -0
- package/dist/assessment/schema.js +162 -0
- package/dist/assessment/types.d.ts +197 -0
- package/dist/assessment/types.d.ts.map +1 -0
- package/dist/assessment/types.js +1 -0
- package/dist/assessment/version.d.ts +11 -0
- package/dist/assessment/version.d.ts.map +1 -0
- package/dist/assessment/version.js +9 -0
- package/dist/assessmentLabels.d.ts +1 -1
- package/dist/assessmentLabels.d.ts.map +1 -1
- package/dist/assessmentPresentationUtils.d.ts +1 -1
- package/dist/assessmentPresentationUtils.d.ts.map +1 -1
- package/dist/assessmentProjection.d.ts +1 -1
- package/dist/assessmentProjection.d.ts.map +1 -1
- package/dist/deriveScanNarrative.d.ts.map +1 -1
- package/dist/deriveScanNarrative.js +2 -1
- package/dist/fixtures/assessmentFixtures.d.ts +1 -1
- package/dist/fixtures/assessmentScopeFixtures.d.ts +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/lockfileEvidence.d.ts +22 -0
- package/dist/lockfileEvidence.d.ts.map +1 -0
- package/dist/lockfileEvidence.js +32 -0
- package/dist/presentation/dto/assessmentPresentationFields.d.ts +1 -1
- package/dist/presentation/dto/assessmentPresentationFields.d.ts.map +1 -1
- package/dist/presentation/orchestration/buildScanPresentationBundle.d.ts.map +1 -1
- package/dist/presentation/orchestration/buildScanPresentationBundle.js +2 -1
- package/dist/presentation/orchestration/scanPresentationBundle.d.ts +2 -1
- package/dist/presentation/orchestration/scanPresentationBundle.d.ts.map +1 -1
- package/dist/presentation/profile/buildProfileFromAssessment.d.ts +1 -1
- package/dist/presentation/profile/buildProfileFromAssessment.d.ts.map +1 -1
- package/dist/presentation/profile/buildProfileFromAssessment.js +13 -5
- package/dist/repoIntelligenceSchema.d.ts +5 -5
- package/dist/scanResultSchema.d.ts +6 -6
- package/dist/scanResultSchema.js +1 -1
- package/dist/types.d.ts +6 -2
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -3
- package/dist/actionsStepSummary.test.d.ts +0 -2
- package/dist/actionsStepSummary.test.d.ts.map +0 -1
- package/dist/actionsStepSummary.test.js +0 -53
- package/dist/assessmentProjection.verificationChannel.test.d.ts +0 -2
- package/dist/assessmentProjection.verificationChannel.test.d.ts.map +0 -1
- package/dist/assessmentProjection.verificationChannel.test.js +0 -110
- package/dist/deriveScanNarrative.test.d.ts +0 -2
- package/dist/deriveScanNarrative.test.d.ts.map +0 -1
- package/dist/deriveScanNarrative.test.js +0 -274
- package/dist/engineWireRegression.test.d.ts +0 -2
- package/dist/engineWireRegression.test.d.ts.map +0 -1
- package/dist/engineWireRegression.test.js +0 -77
- package/dist/fixtures/engineAbi4Fixtures.d.ts +0 -16
- package/dist/fixtures/engineAbi4Fixtures.d.ts.map +0 -1
- package/dist/fixtures/engineAbi4Fixtures.js +0 -26
- package/dist/fixtures/legacyEngineRepoIntelligence.d.ts +0 -28
- package/dist/fixtures/legacyEngineRepoIntelligence.d.ts.map +0 -1
- package/dist/fixtures/legacyEngineRepoIntelligence.js +0 -28
- package/dist/fixtures/repoIntelligenceFixtures.d.ts +0 -8
- package/dist/fixtures/repoIntelligenceFixtures.d.ts.map +0 -1
- package/dist/fixtures/repoIntelligenceFixtures.js +0 -123
- package/dist/fixtures/repoIntelligenceTestHelpers.d.ts +0 -5
- package/dist/fixtures/repoIntelligenceTestHelpers.d.ts.map +0 -1
- package/dist/fixtures/repoIntelligenceTestHelpers.js +0 -28
- package/dist/formatInsight.test.d.ts +0 -2
- package/dist/formatInsight.test.d.ts.map +0 -1
- package/dist/formatInsight.test.js +0 -102
- package/dist/narrativeParity.test.d.ts +0 -2
- package/dist/narrativeParity.test.d.ts.map +0 -1
- package/dist/narrativeParity.test.js +0 -35
- package/dist/narrativePresentation.test.d.ts +0 -2
- package/dist/narrativePresentation.test.d.ts.map +0 -1
- package/dist/narrativePresentation.test.js +0 -54
- package/dist/normalizeGeneratedText.test.d.ts +0 -2
- package/dist/normalizeGeneratedText.test.d.ts.map +0 -1
- package/dist/normalizeGeneratedText.test.js +0 -18
- package/dist/prRiskBand.test.d.ts +0 -2
- package/dist/prRiskBand.test.d.ts.map +0 -1
- package/dist/prRiskBand.test.js +0 -68
- package/dist/prRiskWire.test.d.ts +0 -2
- package/dist/prRiskWire.test.d.ts.map +0 -1
- package/dist/prRiskWire.test.js +0 -106
- package/dist/prRiskWiringRegression.test.d.ts +0 -2
- package/dist/prRiskWiringRegression.test.d.ts.map +0 -1
- package/dist/prRiskWiringRegression.test.js +0 -102
- package/dist/presentation/abi3Expression.test.d.ts +0 -13
- package/dist/presentation/abi3Expression.test.d.ts.map +0 -1
- package/dist/presentation/abi3Expression.test.js +0 -392
- package/dist/presentation/buildGitHubCheckRunOutput.test.d.ts +0 -2
- package/dist/presentation/buildGitHubCheckRunOutput.test.d.ts.map +0 -1
- package/dist/presentation/buildGitHubCheckRunOutput.test.js +0 -163
- package/dist/presentation/bundleAccessorParity.test.d.ts +0 -9
- package/dist/presentation/bundleAccessorParity.test.d.ts.map +0 -1
- package/dist/presentation/bundleAccessorParity.test.js +0 -126
- package/dist/presentation/cliParity.test.d.ts +0 -2
- package/dist/presentation/cliParity.test.d.ts.map +0 -1
- package/dist/presentation/cliParity.test.js +0 -49
- package/dist/presentation/compose/narrativeChannels.test.d.ts +0 -2
- package/dist/presentation/compose/narrativeChannels.test.d.ts.map +0 -1
- package/dist/presentation/compose/narrativeChannels.test.js +0 -42
- package/dist/presentation/decisionSurface.test.d.ts +0 -2
- package/dist/presentation/decisionSurface.test.d.ts.map +0 -1
- package/dist/presentation/decisionSurface.test.js +0 -290
- package/dist/presentation/fixtures/dashboardCardGolden.test.d.ts +0 -2
- package/dist/presentation/fixtures/dashboardCardGolden.test.d.ts.map +0 -1
- package/dist/presentation/fixtures/dashboardCardGolden.test.js +0 -38
- package/dist/presentation/fixtures/presentationPersonaFixtures.d.ts +0 -11
- package/dist/presentation/fixtures/presentationPersonaFixtures.d.ts.map +0 -1
- package/dist/presentation/fixtures/presentationPersonaFixtures.js +0 -208
- package/dist/presentation/fixtures/scanResultFixtures.d.ts +0 -5
- package/dist/presentation/fixtures/scanResultFixtures.d.ts.map +0 -1
- package/dist/presentation/fixtures/scanResultFixtures.js +0 -123
- package/dist/presentation/intent/postureVocabularyGuard.test.d.ts +0 -2
- package/dist/presentation/intent/postureVocabularyGuard.test.d.ts.map +0 -1
- package/dist/presentation/intent/postureVocabularyGuard.test.js +0 -23
- package/dist/presentation/orchestration/buildScanPresentationBundle.test.d.ts +0 -2
- package/dist/presentation/orchestration/buildScanPresentationBundle.test.d.ts.map +0 -1
- package/dist/presentation/orchestration/buildScanPresentationBundle.test.js +0 -99
- package/dist/presentation/presentation.test.d.ts +0 -2
- package/dist/presentation/presentation.test.d.ts.map +0 -1
- package/dist/presentation/presentation.test.js +0 -126
- package/dist/presentation/presentationPersonas.test.d.ts +0 -2
- package/dist/presentation/presentationPersonas.test.d.ts.map +0 -1
- package/dist/presentation/presentationPersonas.test.js +0 -164
- package/dist/presentation/surfaceParity.test.d.ts +0 -2
- package/dist/presentation/surfaceParity.test.d.ts.map +0 -1
- package/dist/presentation/surfaceParity.test.js +0 -156
- package/dist/presentation/verificationChannelParity.test.d.ts +0 -2
- package/dist/presentation/verificationChannelParity.test.d.ts.map +0 -1
- package/dist/presentation/verificationChannelParity.test.js +0 -57
- package/dist/productMessaging.test.d.ts +0 -2
- package/dist/productMessaging.test.d.ts.map +0 -1
- package/dist/productMessaging.test.js +0 -97
- package/dist/repoIntelligenceSchema.contract.test.d.ts +0 -2
- package/dist/repoIntelligenceSchema.contract.test.d.ts.map +0 -1
- package/dist/repoIntelligenceSchema.contract.test.js +0 -51
- package/dist/repoIntelligenceSemantics.test.d.ts +0 -2
- package/dist/repoIntelligenceSemantics.test.d.ts.map +0 -1
- package/dist/repoIntelligenceSemantics.test.js +0 -63
- package/dist/repoIntelligenceValidation.persist.test.d.ts +0 -2
- package/dist/repoIntelligenceValidation.persist.test.d.ts.map +0 -1
- package/dist/repoIntelligenceValidation.persist.test.js +0 -44
- package/dist/riskSignals.test.d.ts +0 -2
- package/dist/riskSignals.test.d.ts.map +0 -1
- package/dist/riskSignals.test.js +0 -32
- package/dist/riskVocabulary.test.d.ts +0 -2
- package/dist/riskVocabulary.test.d.ts.map +0 -1
- package/dist/riskVocabulary.test.js +0 -14
- package/dist/scanPresentationBundle.golden.test.d.ts +0 -2
- package/dist/scanPresentationBundle.golden.test.d.ts.map +0 -1
- package/dist/scanPresentationBundle.golden.test.js +0 -78
- package/dist/scanResultSchema.test.d.ts +0 -2
- package/dist/scanResultSchema.test.d.ts.map +0 -1
- package/dist/scanResultSchema.test.js +0 -162
- package/dist/scanSurfaceCopy.test.d.ts +0 -2
- package/dist/scanSurfaceCopy.test.d.ts.map +0 -1
- package/dist/scanSurfaceCopy.test.js +0 -14
- package/dist/selectTopAffectedAreas.test.d.ts +0 -2
- package/dist/selectTopAffectedAreas.test.d.ts.map +0 -1
- package/dist/selectTopAffectedAreas.test.js +0 -179
- package/dist/trustedScanGuards.test.d.ts +0 -2
- package/dist/trustedScanGuards.test.d.ts.map +0 -1
- package/dist/trustedScanGuards.test.js +0 -151
|
@@ -1,151 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect, beforeEach, afterEach } from "vitest";
|
|
2
|
-
import { assertTrustedActionsSummaryAllowed, assertTrustedScanResult, auditTrustedActionsOutput, isStubMethodologyVersion, trustedActionsSummaryDenylistPhrases, validateTrustedEngineScanResult, } from "./trustedScanGuards.js";
|
|
3
|
-
import { assessmentStub } from "./fixtures/assessmentFixtures.js";
|
|
4
|
-
import { withAbi4EngineScores } from "./fixtures/engineAbi4Fixtures.js";
|
|
5
|
-
import { scanSurfaceCopy } from "./scanSurfaceCopy.js";
|
|
6
|
-
const baseResult = withAbi4EngineScores({
|
|
7
|
-
totalScore: 10,
|
|
8
|
-
layerScores: {
|
|
9
|
-
security: 10,
|
|
10
|
-
maintainability: 10,
|
|
11
|
-
ecosystem: 10,
|
|
12
|
-
upgradeImpact: 10,
|
|
13
|
-
},
|
|
14
|
-
findings: [],
|
|
15
|
-
recommendations: [],
|
|
16
|
-
generatedAt: "2026-01-01T00:00:00.000Z",
|
|
17
|
-
methodologyVersion: "engine-stub/v2",
|
|
18
|
-
assessment: assessmentStub,
|
|
19
|
-
decision: {
|
|
20
|
-
recommendation: "needs_review",
|
|
21
|
-
confidence: "low",
|
|
22
|
-
reasoning: ["Stub engine cannot perform real analysis"],
|
|
23
|
-
},
|
|
24
|
-
});
|
|
25
|
-
describe("trustedScanGuards", () => {
|
|
26
|
-
it("detects stub methodology", () => {
|
|
27
|
-
expect(isStubMethodologyVersion("engine-stub/v2")).toBe(true);
|
|
28
|
-
expect(isStubMethodologyVersion("Engine-Stub/v1")).toBe(true);
|
|
29
|
-
expect(isStubMethodologyVersion("acme-engine/v1")).toBe(false);
|
|
30
|
-
expect(isStubMethodologyVersion(undefined)).toBe(false);
|
|
31
|
-
});
|
|
32
|
-
it("denylist includes demo copy", () => {
|
|
33
|
-
const d = trustedActionsSummaryDenylistPhrases();
|
|
34
|
-
expect(d).toContain(scanSurfaceCopy.actions.demoSummaryTitle);
|
|
35
|
-
expect(d).toContain(scanSurfaceCopy.actions.demoSummaryBanner);
|
|
36
|
-
});
|
|
37
|
-
it("assertTrustedActionsSummaryAllowed throws for trusted + stub", () => {
|
|
38
|
-
expect(() => assertTrustedActionsSummaryAllowed("trusted", "engine-stub/v2")).toThrow(/verification requirements/);
|
|
39
|
-
});
|
|
40
|
-
it("assertTrustedActionsSummaryAllowed allows trusted + real methodology", () => {
|
|
41
|
-
expect(() => assertTrustedActionsSummaryAllowed("trusted", "acme-prod/v3")).not.toThrow();
|
|
42
|
-
});
|
|
43
|
-
it("assertTrustedActionsSummaryAllowed ignores non-trusted profile", () => {
|
|
44
|
-
expect(() => assertTrustedActionsSummaryAllowed("development", "engine-stub/v2")).not.toThrow();
|
|
45
|
-
});
|
|
46
|
-
describe("assertTrustedScanResult", () => {
|
|
47
|
-
const originalEnv = process.env;
|
|
48
|
-
beforeEach(() => {
|
|
49
|
-
process.env = { ...originalEnv };
|
|
50
|
-
delete process.env.MERGESIGNAL_TRUSTED_METHODOLOGY_PREFIX;
|
|
51
|
-
});
|
|
52
|
-
afterEach(() => {
|
|
53
|
-
process.env = originalEnv;
|
|
54
|
-
});
|
|
55
|
-
it("rejects stub methodology", () => {
|
|
56
|
-
expect(() => assertTrustedScanResult(baseResult)).toThrow(/verification requirements/);
|
|
57
|
-
});
|
|
58
|
-
it("accepts non-stub methodology", () => {
|
|
59
|
-
expect(() => assertTrustedScanResult({
|
|
60
|
-
...baseResult,
|
|
61
|
-
methodologyVersion: "engine-test-fixture/v1",
|
|
62
|
-
})).not.toThrow();
|
|
63
|
-
});
|
|
64
|
-
it("enforces methodology prefix when env set", () => {
|
|
65
|
-
process.env.MERGESIGNAL_TRUSTED_METHODOLOGY_PREFIX =
|
|
66
|
-
"engine-test-fixture/";
|
|
67
|
-
expect(() => assertTrustedScanResult({
|
|
68
|
-
...baseResult,
|
|
69
|
-
methodologyVersion: "engine-test-fixture/v1",
|
|
70
|
-
})).not.toThrow();
|
|
71
|
-
expect(() => assertTrustedScanResult({
|
|
72
|
-
...baseResult,
|
|
73
|
-
methodologyVersion: "other/v1",
|
|
74
|
-
})).toThrow(/methodology output did not match/);
|
|
75
|
-
});
|
|
76
|
-
});
|
|
77
|
-
describe("validateTrustedEngineScanResult", () => {
|
|
78
|
-
const originalEnv = process.env;
|
|
79
|
-
beforeEach(() => {
|
|
80
|
-
process.env = { ...originalEnv };
|
|
81
|
-
delete process.env.MERGESIGNAL_TRUSTED_METHODOLOGY_PREFIX;
|
|
82
|
-
});
|
|
83
|
-
afterEach(() => {
|
|
84
|
-
process.env = originalEnv;
|
|
85
|
-
});
|
|
86
|
-
it("rejects structurally valid relaxed payload without methodologyVersion", () => {
|
|
87
|
-
expect(() => validateTrustedEngineScanResult({
|
|
88
|
-
totalScore: 10,
|
|
89
|
-
layerScores: {
|
|
90
|
-
security: 10,
|
|
91
|
-
maintainability: 10,
|
|
92
|
-
ecosystem: 10,
|
|
93
|
-
upgradeImpact: 10,
|
|
94
|
-
},
|
|
95
|
-
findings: [],
|
|
96
|
-
generatedAt: "2026-01-01T00:00:00.000Z",
|
|
97
|
-
})).toThrow(/^validation:/);
|
|
98
|
-
});
|
|
99
|
-
it("returns result when strict schema and trusted policy pass", () => {
|
|
100
|
-
const r = validateTrustedEngineScanResult({
|
|
101
|
-
...baseResult,
|
|
102
|
-
methodologyVersion: "acme-prod/v2",
|
|
103
|
-
});
|
|
104
|
-
expect(r.methodologyVersion).toBe("acme-prod/v2");
|
|
105
|
-
});
|
|
106
|
-
});
|
|
107
|
-
describe("auditTrustedActionsOutput", () => {
|
|
108
|
-
it("fails when summary contains demo title", () => {
|
|
109
|
-
const r = auditTrustedActionsOutput({
|
|
110
|
-
summaryText: `Hello ${scanSurfaceCopy.actions.demoSummaryTitle} world`,
|
|
111
|
-
scanResult: {
|
|
112
|
-
...baseResult,
|
|
113
|
-
methodologyVersion: "acme/v1",
|
|
114
|
-
},
|
|
115
|
-
});
|
|
116
|
-
expect(r.ok).toBe(false);
|
|
117
|
-
if (!r.ok)
|
|
118
|
-
expect(r.errors.length).toBeGreaterThan(0);
|
|
119
|
-
});
|
|
120
|
-
it("passes for clean summary and valid methodology", () => {
|
|
121
|
-
const r = auditTrustedActionsOutput({
|
|
122
|
-
summaryText: "# MergeSignal\n\nLow risk posture.",
|
|
123
|
-
scanResult: {
|
|
124
|
-
...baseResult,
|
|
125
|
-
methodologyVersion: "acme-prod/v2",
|
|
126
|
-
},
|
|
127
|
-
});
|
|
128
|
-
expect(r).toEqual({ ok: true });
|
|
129
|
-
});
|
|
130
|
-
it("fails when scan JSON omits methodology (strict engine contract)", () => {
|
|
131
|
-
const r = auditTrustedActionsOutput({
|
|
132
|
-
summaryText: "# MergeSignal\n\nLow risk posture.",
|
|
133
|
-
scanResult: {
|
|
134
|
-
totalScore: 10,
|
|
135
|
-
layerScores: {
|
|
136
|
-
security: 10,
|
|
137
|
-
maintainability: 10,
|
|
138
|
-
ecosystem: 10,
|
|
139
|
-
upgradeImpact: 10,
|
|
140
|
-
},
|
|
141
|
-
findings: [],
|
|
142
|
-
generatedAt: "2026-01-01T00:00:00.000Z",
|
|
143
|
-
},
|
|
144
|
-
});
|
|
145
|
-
expect(r.ok).toBe(false);
|
|
146
|
-
if (!r.ok) {
|
|
147
|
-
expect(r.errors.some((e) => e.startsWith("validation:"))).toBe(true);
|
|
148
|
-
}
|
|
149
|
-
});
|
|
150
|
-
});
|
|
151
|
-
});
|