@mergesignal/shared 0.12.2 → 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 +1 -2
- 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,208 +0,0 @@
|
|
|
1
|
-
import { assessmentBullmq, assessmentEslint, assessmentMixedTypescriptFastify, assessmentNextAuth, assessmentPrettier, assessmentUnknownSafe, assessmentVitest, } from "../../fixtures/assessmentFixtures.js";
|
|
2
|
-
import { fixtureRepoIntelligenceFastify, fixtureRepoIntelligenceTypescript, } from "../../fixtures/repoIntelligenceFixtures.js";
|
|
3
|
-
import { withAbi4SplitScores } from "../../fixtures/engineAbi4Fixtures.js";
|
|
4
|
-
import { analysisPreparationWithValidRepoIntel } from "../../fixtures/repoIntelligenceTestHelpers.js";
|
|
5
|
-
import { scanResultFastifyRuntime, scanResultLimitedContext, scanResultTypescriptPatch, } from "./scanResultFixtures.js";
|
|
6
|
-
const basePrep = analysisPreparationWithValidRepoIntel();
|
|
7
|
-
const fixtureRepoIntelligenceEslint = {
|
|
8
|
-
packages: {
|
|
9
|
-
eslint: {
|
|
10
|
-
runtimeSurface: "build",
|
|
11
|
-
reachability: "build_only",
|
|
12
|
-
runtimeImpact: "none",
|
|
13
|
-
expectedImpact: "development_only",
|
|
14
|
-
evidenceStrength: "medium",
|
|
15
|
-
suppressRuntimeNarrative: true,
|
|
16
|
-
dependencyClass: "lint",
|
|
17
|
-
packageRole: "linter",
|
|
18
|
-
verificationFocus: ["ci", "lint"],
|
|
19
|
-
usage: { packageName: "eslint", files: [".eslintrc.cjs"], paths: [] },
|
|
20
|
-
},
|
|
21
|
-
},
|
|
22
|
-
blastRadius: { level: "narrow", changedPackageCount: 1 },
|
|
23
|
-
applicationAreas: [],
|
|
24
|
-
};
|
|
25
|
-
const fixtureRepoIntelligencePrettier = {
|
|
26
|
-
packages: {
|
|
27
|
-
prettier: {
|
|
28
|
-
runtimeSurface: "build",
|
|
29
|
-
reachability: "build_only",
|
|
30
|
-
runtimeImpact: "none",
|
|
31
|
-
expectedImpact: "development_only",
|
|
32
|
-
evidenceStrength: "medium",
|
|
33
|
-
suppressRuntimeNarrative: true,
|
|
34
|
-
dependencyClass: "format",
|
|
35
|
-
packageRole: "formatter",
|
|
36
|
-
verificationFocus: ["ci", "format"],
|
|
37
|
-
usage: { packageName: "prettier", files: [".prettierrc"], paths: [] },
|
|
38
|
-
},
|
|
39
|
-
},
|
|
40
|
-
blastRadius: { level: "narrow", changedPackageCount: 1 },
|
|
41
|
-
applicationAreas: [],
|
|
42
|
-
};
|
|
43
|
-
const fixtureRepoIntelligenceVitest = {
|
|
44
|
-
packages: {
|
|
45
|
-
vitest: {
|
|
46
|
-
runtimeSurface: "test",
|
|
47
|
-
reachability: "test_only",
|
|
48
|
-
runtimeImpact: "none",
|
|
49
|
-
expectedImpact: "test_time",
|
|
50
|
-
evidenceStrength: "medium",
|
|
51
|
-
suppressRuntimeNarrative: true,
|
|
52
|
-
dependencyClass: "test",
|
|
53
|
-
packageRole: "test_runner",
|
|
54
|
-
verificationFocus: ["ci", "test_suite"],
|
|
55
|
-
usage: { packageName: "vitest", files: ["vitest.config.ts"], paths: [] },
|
|
56
|
-
},
|
|
57
|
-
},
|
|
58
|
-
blastRadius: { level: "narrow", changedPackageCount: 1 },
|
|
59
|
-
applicationAreas: [],
|
|
60
|
-
};
|
|
61
|
-
const fixtureRepoIntelligenceNextAuth = {
|
|
62
|
-
packages: {
|
|
63
|
-
"next-auth": {
|
|
64
|
-
runtimeSurface: "runtime",
|
|
65
|
-
reachability: "on_runtime_paths",
|
|
66
|
-
runtimeImpact: "confirmed",
|
|
67
|
-
expectedImpact: "runtime",
|
|
68
|
-
evidenceStrength: "high",
|
|
69
|
-
suppressRuntimeNarrative: false,
|
|
70
|
-
dependencyClass: "runtime",
|
|
71
|
-
packageRole: "auth",
|
|
72
|
-
verificationFocus: ["auth_flow", "session", "routes"],
|
|
73
|
-
usage: {
|
|
74
|
-
packageName: "next-auth",
|
|
75
|
-
files: ["apps/web/src/auth.ts"],
|
|
76
|
-
paths: ["apps/web/src/auth.ts"],
|
|
77
|
-
areas: ["Auth"],
|
|
78
|
-
},
|
|
79
|
-
},
|
|
80
|
-
},
|
|
81
|
-
blastRadius: { level: "moderate", changedPackageCount: 1 },
|
|
82
|
-
applicationAreas: [{ id: "auth", label: "authentication flows" }],
|
|
83
|
-
};
|
|
84
|
-
const fixtureRepoIntelligenceBullmq = {
|
|
85
|
-
packages: {
|
|
86
|
-
bullmq: {
|
|
87
|
-
runtimeSurface: "runtime",
|
|
88
|
-
reachability: "on_runtime_paths",
|
|
89
|
-
runtimeImpact: "confirmed",
|
|
90
|
-
expectedImpact: "runtime",
|
|
91
|
-
evidenceStrength: "high",
|
|
92
|
-
suppressRuntimeNarrative: false,
|
|
93
|
-
dependencyClass: "runtime",
|
|
94
|
-
packageRole: "queue",
|
|
95
|
-
verificationFocus: ["workers", "queue", "serialization"],
|
|
96
|
-
usage: {
|
|
97
|
-
packageName: "bullmq",
|
|
98
|
-
files: ["apps/worker/src/queue.ts"],
|
|
99
|
-
paths: ["apps/worker/src/queue.ts"],
|
|
100
|
-
areas: ["Workers"],
|
|
101
|
-
},
|
|
102
|
-
},
|
|
103
|
-
},
|
|
104
|
-
blastRadius: { level: "moderate", changedPackageCount: 1 },
|
|
105
|
-
applicationAreas: [{ id: "workers", label: "background job processing" }],
|
|
106
|
-
};
|
|
107
|
-
const fixtureRepoIntelligenceUnknown = {
|
|
108
|
-
packages: {
|
|
109
|
-
"opaque-pkg": {
|
|
110
|
-
runtimeSurface: "unknown",
|
|
111
|
-
reachability: "unknown",
|
|
112
|
-
runtimeImpact: "unknown",
|
|
113
|
-
expectedImpact: "unknown",
|
|
114
|
-
evidenceStrength: "low",
|
|
115
|
-
suppressRuntimeNarrative: false,
|
|
116
|
-
dependencyClass: "unknown",
|
|
117
|
-
packageRole: "unknown",
|
|
118
|
-
verificationFocus: [],
|
|
119
|
-
usage: { packageName: "opaque-pkg", files: [], paths: [] },
|
|
120
|
-
},
|
|
121
|
-
},
|
|
122
|
-
blastRadius: { level: "narrow", changedPackageCount: 1 },
|
|
123
|
-
applicationAreas: [],
|
|
124
|
-
};
|
|
125
|
-
const fixtureRepoIntelligenceMixedToolingRuntime = {
|
|
126
|
-
packages: {
|
|
127
|
-
typescript: fixtureRepoIntelligenceTypescript.packages.typescript,
|
|
128
|
-
fastify: fixtureRepoIntelligenceFastify.packages.fastify,
|
|
129
|
-
},
|
|
130
|
-
blastRadius: fixtureRepoIntelligenceFastify.blastRadius,
|
|
131
|
-
applicationAreas: fixtureRepoIntelligenceFastify.applicationAreas,
|
|
132
|
-
};
|
|
133
|
-
function decisionForAssessment(assessment) {
|
|
134
|
-
return {
|
|
135
|
-
recommendation: assessment.posture,
|
|
136
|
-
confidence: assessment.confidence,
|
|
137
|
-
reasoning: assessment.posture === "safe"
|
|
138
|
-
? [
|
|
139
|
-
"No dedicated dependency review required beyond normal engineering process.",
|
|
140
|
-
]
|
|
141
|
-
: assessment.primaryConcern === "confirmed_runtime_usage"
|
|
142
|
-
? [
|
|
143
|
-
"Changed package has confirmed usage on runtime application paths in this repository.",
|
|
144
|
-
]
|
|
145
|
-
: ["Explicit human review warranted before merge."],
|
|
146
|
-
};
|
|
147
|
-
}
|
|
148
|
-
function scanBase(assessment, over = {}) {
|
|
149
|
-
return {
|
|
150
|
-
totalScore: 18,
|
|
151
|
-
layerScores: {
|
|
152
|
-
security: 5,
|
|
153
|
-
maintainability: 8,
|
|
154
|
-
ecosystem: 10,
|
|
155
|
-
upgradeImpact: 5,
|
|
156
|
-
},
|
|
157
|
-
findings: [],
|
|
158
|
-
generatedAt: "2026-01-01T00:00:00.000Z",
|
|
159
|
-
assessment,
|
|
160
|
-
decision: decisionForAssessment(assessment),
|
|
161
|
-
analysisPreparation: basePrep,
|
|
162
|
-
...over,
|
|
163
|
-
};
|
|
164
|
-
}
|
|
165
|
-
export const scanResultEslint = scanBase(assessmentEslint, {
|
|
166
|
-
changedPackages: ["eslint"],
|
|
167
|
-
repoIntelligence: fixtureRepoIntelligenceEslint,
|
|
168
|
-
});
|
|
169
|
-
export const scanResultPrettier = withAbi4SplitScores(scanBase(assessmentPrettier, {
|
|
170
|
-
changedPackages: ["prettier"],
|
|
171
|
-
repoIntelligence: fixtureRepoIntelligencePrettier,
|
|
172
|
-
}), {
|
|
173
|
-
prRiskScore: 30,
|
|
174
|
-
repositoryHealthScore: 61,
|
|
175
|
-
});
|
|
176
|
-
export const scanResultVitest = scanBase(assessmentVitest, {
|
|
177
|
-
changedPackages: ["vitest"],
|
|
178
|
-
repoIntelligence: fixtureRepoIntelligenceVitest,
|
|
179
|
-
});
|
|
180
|
-
export const scanResultNextAuth = scanBase(assessmentNextAuth, {
|
|
181
|
-
totalScore: 52,
|
|
182
|
-
changedPackages: ["next-auth"],
|
|
183
|
-
repoIntelligence: fixtureRepoIntelligenceNextAuth,
|
|
184
|
-
});
|
|
185
|
-
export const scanResultBullmq = scanBase(assessmentBullmq, {
|
|
186
|
-
totalScore: 48,
|
|
187
|
-
changedPackages: ["bullmq"],
|
|
188
|
-
repoIntelligence: fixtureRepoIntelligenceBullmq,
|
|
189
|
-
decision: {
|
|
190
|
-
recommendation: "needs_review",
|
|
191
|
-
confidence: "medium",
|
|
192
|
-
reasoning: [
|
|
193
|
-
"Changed package has confirmed usage on runtime application paths in this repository.",
|
|
194
|
-
"Queue infrastructure",
|
|
195
|
-
"Verification focus required",
|
|
196
|
-
],
|
|
197
|
-
},
|
|
198
|
-
});
|
|
199
|
-
export const scanResultUnknownSafe = scanBase(assessmentUnknownSafe, {
|
|
200
|
-
changedPackages: ["opaque-pkg"],
|
|
201
|
-
repoIntelligence: fixtureRepoIntelligenceUnknown,
|
|
202
|
-
});
|
|
203
|
-
export const scanResultMixedTypescriptFastify = scanBase(assessmentMixedTypescriptFastify, {
|
|
204
|
-
totalScore: 55,
|
|
205
|
-
changedPackages: ["typescript", "fastify"],
|
|
206
|
-
repoIntelligence: fixtureRepoIntelligenceMixedToolingRuntime,
|
|
207
|
-
});
|
|
208
|
-
export { scanResultFastifyRuntime, scanResultLimitedContext, scanResultTypescriptPatch, };
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import type { ScanResult } from "../../types.js";
|
|
2
|
-
export declare const scanResultFastifyRuntime: ScanResult;
|
|
3
|
-
export declare const scanResultTypescriptPatch: ScanResult;
|
|
4
|
-
export declare const scanResultLimitedContext: ScanResult;
|
|
5
|
-
//# sourceMappingURL=scanResultFixtures.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scanResultFixtures.d.ts","sourceRoot":"","sources":["../../../src/presentation/fixtures/scanResultFixtures.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAoBjD,eAAO,MAAM,wBAAwB,EAAE,UA4CtC,CAAC;AASF,eAAO,MAAM,yBAAyB,EAAE,UA6BvC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,UAqCtC,CAAC"}
|
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
import { withAbi4SplitScores } from "../../fixtures/engineAbi4Fixtures.js";
|
|
2
|
-
import { assessmentFastifyRuntime, assessmentLimitedContext, assessmentTypescriptPatch, } from "../../fixtures/assessmentFixtures.js";
|
|
3
|
-
import { fixtureRepoIntelligenceFastify, fixtureRepoIntelligenceTypescript, } from "../../fixtures/repoIntelligenceFixtures.js";
|
|
4
|
-
import { analysisPreparationWithValidRepoIntel } from "../../fixtures/repoIntelligenceTestHelpers.js";
|
|
5
|
-
const fastifyLayerScores = {
|
|
6
|
-
security: 10,
|
|
7
|
-
maintainability: 20,
|
|
8
|
-
ecosystem: 30,
|
|
9
|
-
upgradeImpact: 15,
|
|
10
|
-
};
|
|
11
|
-
export const scanResultFastifyRuntime = withAbi4SplitScores({
|
|
12
|
-
totalScore: 63,
|
|
13
|
-
layerScores: fastifyLayerScores,
|
|
14
|
-
findings: [
|
|
15
|
-
{
|
|
16
|
-
id: "finding-fastify-runtime",
|
|
17
|
-
title: "Runtime middleware coupling",
|
|
18
|
-
description: "Fastify middleware ordering may affect auth paths.",
|
|
19
|
-
severity: "medium",
|
|
20
|
-
packageName: "fastify",
|
|
21
|
-
recommendation: "Run auth smoke tests",
|
|
22
|
-
},
|
|
23
|
-
],
|
|
24
|
-
generatedAt: "2026-01-01T00:00:00.000Z",
|
|
25
|
-
changedPackages: ["fastify"],
|
|
26
|
-
analysisPreparation: analysisPreparationWithValidRepoIntel(),
|
|
27
|
-
repoIntelligence: fixtureRepoIntelligenceFastify,
|
|
28
|
-
assessment: assessmentFastifyRuntime,
|
|
29
|
-
decision: {
|
|
30
|
-
recommendation: "needs_review",
|
|
31
|
-
confidence: "medium",
|
|
32
|
-
reasoning: [
|
|
33
|
-
"Changed package has confirmed usage on runtime application paths in this repository.",
|
|
34
|
-
"HTTP framework infrastructure",
|
|
35
|
-
],
|
|
36
|
-
},
|
|
37
|
-
insights: [
|
|
38
|
-
{
|
|
39
|
-
type: "usage_risk",
|
|
40
|
-
priority: "high",
|
|
41
|
-
confidence: "confirmed",
|
|
42
|
-
scope: "changed",
|
|
43
|
-
message: "Review fastify middleware ordering",
|
|
44
|
-
context: "apps/api/src/middleware/auth.ts",
|
|
45
|
-
remediation: "Run auth smoke tests",
|
|
46
|
-
},
|
|
47
|
-
],
|
|
48
|
-
}, {
|
|
49
|
-
prRiskScore: 55,
|
|
50
|
-
repositoryHealthScore: 63,
|
|
51
|
-
layerScores: fastifyLayerScores,
|
|
52
|
-
});
|
|
53
|
-
const typescriptLayerScores = {
|
|
54
|
-
security: 5,
|
|
55
|
-
maintainability: 8,
|
|
56
|
-
ecosystem: 10,
|
|
57
|
-
upgradeImpact: 5,
|
|
58
|
-
};
|
|
59
|
-
export const scanResultTypescriptPatch = withAbi4SplitScores({
|
|
60
|
-
totalScore: 63,
|
|
61
|
-
layerScores: typescriptLayerScores,
|
|
62
|
-
findings: [],
|
|
63
|
-
generatedAt: "2026-01-01T00:00:00.000Z",
|
|
64
|
-
changedPackages: ["typescript"],
|
|
65
|
-
analysisPreparation: analysisPreparationWithValidRepoIntel(),
|
|
66
|
-
repoIntelligence: fixtureRepoIntelligenceTypescript,
|
|
67
|
-
assessment: assessmentTypescriptPatch,
|
|
68
|
-
decision: {
|
|
69
|
-
recommendation: "safe",
|
|
70
|
-
confidence: "high",
|
|
71
|
-
reasoning: [
|
|
72
|
-
"No dedicated dependency review required beyond normal engineering process.",
|
|
73
|
-
],
|
|
74
|
-
},
|
|
75
|
-
graphInsights: {
|
|
76
|
-
maxDepth: 4,
|
|
77
|
-
nodes: 120,
|
|
78
|
-
edges: 340,
|
|
79
|
-
hotspots: [],
|
|
80
|
-
},
|
|
81
|
-
}, {
|
|
82
|
-
prRiskScore: 30,
|
|
83
|
-
repositoryHealthScore: 63,
|
|
84
|
-
layerScores: typescriptLayerScores,
|
|
85
|
-
});
|
|
86
|
-
export const scanResultLimitedContext = {
|
|
87
|
-
totalScore: 40,
|
|
88
|
-
layerScores: {
|
|
89
|
-
security: 10,
|
|
90
|
-
maintainability: 10,
|
|
91
|
-
ecosystem: 10,
|
|
92
|
-
upgradeImpact: 10,
|
|
93
|
-
},
|
|
94
|
-
findings: [],
|
|
95
|
-
generatedAt: "2026-01-01T00:00:00.000Z",
|
|
96
|
-
changedPackages: ["lodash"],
|
|
97
|
-
analysisPreparation: {
|
|
98
|
-
codeIntelligenceAvailable: false,
|
|
99
|
-
warnings: [
|
|
100
|
-
{
|
|
101
|
-
code: "base_lockfile_missing",
|
|
102
|
-
message: "Base lockfile not available for diff",
|
|
103
|
-
},
|
|
104
|
-
],
|
|
105
|
-
},
|
|
106
|
-
repoIntelligence: { invalid: true },
|
|
107
|
-
assessment: assessmentLimitedContext,
|
|
108
|
-
graphInsights: {
|
|
109
|
-
maxDepth: 5,
|
|
110
|
-
nodes: 200,
|
|
111
|
-
edges: 500,
|
|
112
|
-
hotspots: [
|
|
113
|
-
{ kind: "hotspot", packageName: "lodash", direct: true, depth: 2 },
|
|
114
|
-
],
|
|
115
|
-
},
|
|
116
|
-
decision: {
|
|
117
|
-
recommendation: "needs_review",
|
|
118
|
-
confidence: "low",
|
|
119
|
-
reasoning: [
|
|
120
|
-
"Collection evidence is partial; confidence is reduced but review posture is preserved when runtime signals exist.",
|
|
121
|
-
],
|
|
122
|
-
},
|
|
123
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"postureVocabularyGuard.test.d.ts","sourceRoot":"","sources":["../../../src/presentation/intent/postureVocabularyGuard.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it } from "vitest";
|
|
2
|
-
import { applyPostureVocabularyGuardHeadline, applyPostureVocabularyGuardLines, guardHeadlineForPosture, } from "./applyPostureVocabularyGuard.js";
|
|
3
|
-
describe("applyPostureVocabularyGuard", () => {
|
|
4
|
-
it("substitutes safe headline when review language present", () => {
|
|
5
|
-
const out = guardHeadlineForPosture("typescript dependency upgrade needs review", "safe", "typescript");
|
|
6
|
-
expect(out.toLowerCase()).not.toContain("needs review");
|
|
7
|
-
expect(out.toLowerCase()).toContain("typescript");
|
|
8
|
-
});
|
|
9
|
-
it("filters safe-forbidden key points", () => {
|
|
10
|
-
const lines = applyPostureVocabularyGuardLines(["No runtime usage paths detected", "High risk upgrade path"], "safe");
|
|
11
|
-
expect(lines).toContain("No runtime usage paths detected");
|
|
12
|
-
expect(lines.some((l) => /high risk/i.test(l))).toBe(false);
|
|
13
|
-
});
|
|
14
|
-
it("filters needs_review forbidden verification", () => {
|
|
15
|
-
const lines = applyPostureVocabularyGuardLines(["Confirm CI passes", "No action required"], "needs_review");
|
|
16
|
-
expect(lines).toContain("Confirm CI passes");
|
|
17
|
-
expect(lines.some((l) => /no action required/i.test(l))).toBe(false);
|
|
18
|
-
});
|
|
19
|
-
it("allows review headline for needs_review posture", () => {
|
|
20
|
-
const out = applyPostureVocabularyGuardHeadline("lodash dependency upgrade needs review", "needs_review", "lodash");
|
|
21
|
-
expect(out).toContain("needs review");
|
|
22
|
-
});
|
|
23
|
-
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"buildScanPresentationBundle.test.d.ts","sourceRoot":"","sources":["../../../src/presentation/orchestration/buildScanPresentationBundle.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
import { parseAssessmentOrThrow } from "@mergesignal/contracts";
|
|
2
|
-
import { describe, expect, it } from "vitest";
|
|
3
|
-
import { assessmentTypescriptPatch } from "../../fixtures/assessmentFixtures.js";
|
|
4
|
-
import { buildScanCardPresentation } from "./buildScanCardPresentation.js";
|
|
5
|
-
import { buildScanPresentationBundle } from "./buildScanPresentationBundle.js";
|
|
6
|
-
const abi1Assessment = {
|
|
7
|
-
posture: "safe",
|
|
8
|
-
confidence: "high",
|
|
9
|
-
primaryConcern: null,
|
|
10
|
-
concerns: [],
|
|
11
|
-
factors: ["tooling_maintenance"],
|
|
12
|
-
changeClasses: ["tooling_maintenance"],
|
|
13
|
-
presentation: {
|
|
14
|
-
narrativeIntensity: "minimal",
|
|
15
|
-
reachVisibility: "hidden",
|
|
16
|
-
verificationIntensity: "advisory",
|
|
17
|
-
insightEmissionFloor: "none",
|
|
18
|
-
reportMode: "high_signal_pr",
|
|
19
|
-
},
|
|
20
|
-
};
|
|
21
|
-
function minimalScanResult(assessment) {
|
|
22
|
-
return {
|
|
23
|
-
totalScore: 42,
|
|
24
|
-
layerScores: {
|
|
25
|
-
security: 10,
|
|
26
|
-
maintainability: 20,
|
|
27
|
-
ecosystem: 30,
|
|
28
|
-
upgradeImpact: 40,
|
|
29
|
-
},
|
|
30
|
-
findings: [],
|
|
31
|
-
generatedAt: "2026-01-01T00:00:00.000Z",
|
|
32
|
-
decision: {
|
|
33
|
-
recommendation: "safe",
|
|
34
|
-
confidence: "high",
|
|
35
|
-
reasoning: [],
|
|
36
|
-
},
|
|
37
|
-
assessment,
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
describe("buildScanPresentationBundle (presentation boundary)", () => {
|
|
41
|
-
it("ABI-2 assessment produces a bundle", () => {
|
|
42
|
-
const result = minimalScanResult(assessmentTypescriptPatch);
|
|
43
|
-
const bundle = buildScanPresentationBundle({
|
|
44
|
-
result,
|
|
45
|
-
pipelineStatus: "done",
|
|
46
|
-
});
|
|
47
|
-
expect(bundle).not.toBeNull();
|
|
48
|
-
expect(bundle.assessment.reviewFocalPoint.anchors).toContain("typescript");
|
|
49
|
-
});
|
|
50
|
-
it("ABI-2 assessment renders a dashboard card headline", () => {
|
|
51
|
-
const result = minimalScanResult(assessmentTypescriptPatch);
|
|
52
|
-
const card = buildScanCardPresentation({
|
|
53
|
-
pipelineStatus: "done",
|
|
54
|
-
result,
|
|
55
|
-
});
|
|
56
|
-
expect(card.headline.length).toBeGreaterThan(0);
|
|
57
|
-
});
|
|
58
|
-
it("ABI-1 assessment returns null without throwing", () => {
|
|
59
|
-
const result = minimalScanResult(abi1Assessment);
|
|
60
|
-
expect(() => buildScanPresentationBundle({
|
|
61
|
-
result,
|
|
62
|
-
pipelineStatus: "done",
|
|
63
|
-
})).not.toThrow();
|
|
64
|
-
expect(buildScanPresentationBundle({
|
|
65
|
-
result,
|
|
66
|
-
pipelineStatus: "done",
|
|
67
|
-
})).toBeNull();
|
|
68
|
-
});
|
|
69
|
-
it("ABI-1 assessment does not mutate stored assessment JSON", () => {
|
|
70
|
-
const result = minimalScanResult(structuredClone(abi1Assessment));
|
|
71
|
-
const before = JSON.stringify(result.assessment);
|
|
72
|
-
buildScanPresentationBundle({ result, pipelineStatus: "done" });
|
|
73
|
-
expect(JSON.stringify(result.assessment)).toBe(before);
|
|
74
|
-
expect(result.assessment).not.toHaveProperty("reviewFocalPoint");
|
|
75
|
-
});
|
|
76
|
-
it("ABI-1 direct parseAssessmentOrThrow still throws (contracts strict)", () => {
|
|
77
|
-
expect(() => parseAssessmentOrThrow(abi1Assessment)).toThrow();
|
|
78
|
-
});
|
|
79
|
-
it("mixed PR index: ABI-2 ok and ABI-1 degraded without throw", () => {
|
|
80
|
-
const abi2 = minimalScanResult(assessmentTypescriptPatch);
|
|
81
|
-
const abi1 = minimalScanResult(abi1Assessment);
|
|
82
|
-
for (const result of [abi2, abi1]) {
|
|
83
|
-
expect(() => buildScanCardPresentation({
|
|
84
|
-
pipelineStatus: "done",
|
|
85
|
-
result,
|
|
86
|
-
})).not.toThrow();
|
|
87
|
-
}
|
|
88
|
-
const abi2Card = buildScanCardPresentation({
|
|
89
|
-
pipelineStatus: "done",
|
|
90
|
-
result: abi2,
|
|
91
|
-
});
|
|
92
|
-
const abi1Card = buildScanCardPresentation({
|
|
93
|
-
pipelineStatus: "done",
|
|
94
|
-
result: abi1,
|
|
95
|
-
});
|
|
96
|
-
expect(abi2Card.headline.length).toBeGreaterThan(0);
|
|
97
|
-
expect(abi1Card.pipeline?.status).toBe("failed");
|
|
98
|
-
});
|
|
99
|
-
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"presentation.test.d.ts","sourceRoot":"","sources":["../../src/presentation/presentation.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it } from "vitest";
|
|
2
|
-
import { buildScanPresentationBundle } from "./orchestration/buildScanPresentationBundle.js";
|
|
3
|
-
import { presentDashboardCard } from "./presenters/presentDashboardCard.js";
|
|
4
|
-
import { presentScanDetails } from "./presenters/presentScanDetails.js";
|
|
5
|
-
import { presentGitHubCheckRun } from "./presenters/presentGitHubCheckRun.js";
|
|
6
|
-
import { presentGitHubPrComment } from "./presenters/presentGitHubPrComment.js";
|
|
7
|
-
import { presentCliScanSummary } from "./presenters/presentCliScanSummary.js";
|
|
8
|
-
import { scanResultFastifyRuntime, scanResultLimitedContext, scanResultTypescriptPatch, } from "./fixtures/scanResultFixtures.js";
|
|
9
|
-
import { scanResultEslint } from "./fixtures/presentationPersonaFixtures.js";
|
|
10
|
-
const SCAN_ID = "22222222-2222-4222-8222-222222222222";
|
|
11
|
-
const ORIGIN = "https://app.example.com";
|
|
12
|
-
describe("buildScanPresentationBundle", () => {
|
|
13
|
-
it("returns null for incomplete pipeline", () => {
|
|
14
|
-
expect(buildScanPresentationBundle({
|
|
15
|
-
result: scanResultFastifyRuntime,
|
|
16
|
-
pipelineStatus: "running",
|
|
17
|
-
})).toBeNull();
|
|
18
|
-
});
|
|
19
|
-
it("fastify persona: rich needs_review pr_intelligence", () => {
|
|
20
|
-
const bundle = buildScanPresentationBundle({
|
|
21
|
-
result: scanResultFastifyRuntime,
|
|
22
|
-
pipelineStatus: "done",
|
|
23
|
-
});
|
|
24
|
-
expect(bundle.profile.density).toBe("rich");
|
|
25
|
-
expect(bundle.profile.status).toBe("needs_review");
|
|
26
|
-
expect(bundle.profile.priority).toBe("pr_intelligence");
|
|
27
|
-
});
|
|
28
|
-
it("typescript persona: minimal safe pr_intelligence", () => {
|
|
29
|
-
const bundle = buildScanPresentationBundle({
|
|
30
|
-
result: scanResultTypescriptPatch,
|
|
31
|
-
pipelineStatus: "done",
|
|
32
|
-
});
|
|
33
|
-
expect(bundle.profile.density).toBe("minimal");
|
|
34
|
-
expect(bundle.profile.status).toBe("safe");
|
|
35
|
-
expect(bundle.profile.priority).toBe("pr_intelligence");
|
|
36
|
-
});
|
|
37
|
-
it("limited context persona: minimal limited priority", () => {
|
|
38
|
-
const bundle = buildScanPresentationBundle({
|
|
39
|
-
result: scanResultLimitedContext,
|
|
40
|
-
pipelineStatus: "done",
|
|
41
|
-
});
|
|
42
|
-
expect(bundle.profile.density).toBe("minimal");
|
|
43
|
-
expect(bundle.profile.priority).toBe("limited");
|
|
44
|
-
expect(bundle.profile.degradedMessage).toBeTruthy();
|
|
45
|
-
});
|
|
46
|
-
});
|
|
47
|
-
describe("presentDashboardCard personas", () => {
|
|
48
|
-
it("fastify card has scope areas and verification", () => {
|
|
49
|
-
const bundle = buildScanPresentationBundle({
|
|
50
|
-
result: scanResultFastifyRuntime,
|
|
51
|
-
pipelineStatus: "done",
|
|
52
|
-
});
|
|
53
|
-
const card = presentDashboardCard(bundle);
|
|
54
|
-
expect(card.layout).toBe("expanded");
|
|
55
|
-
expect(card.scopeAreas.length).toBeGreaterThan(0);
|
|
56
|
-
expect(card.verification.length).toBeGreaterThan(0);
|
|
57
|
-
expect(card.headline.toLowerCase()).toContain("fastify");
|
|
58
|
-
expect(card.verdict?.posture).toBe("needs_review");
|
|
59
|
-
});
|
|
60
|
-
it("typescript card is quiet safe", () => {
|
|
61
|
-
const bundle = buildScanPresentationBundle({
|
|
62
|
-
result: scanResultTypescriptPatch,
|
|
63
|
-
pipelineStatus: "done",
|
|
64
|
-
});
|
|
65
|
-
const card = presentDashboardCard(bundle);
|
|
66
|
-
expect(["quiet", "standard"]).toContain(card.layout);
|
|
67
|
-
expect(card.verdict?.posture).toBe("safe");
|
|
68
|
-
expect(card.headline).toMatch(/patch upgrade/i);
|
|
69
|
-
expect(card.headline).not.toMatch(/needs review/i);
|
|
70
|
-
expect(card.verification.length).toBeGreaterThan(0);
|
|
71
|
-
expect(card.verificationChannel).toBe("artifact");
|
|
72
|
-
expect(card.verification.some((v) => v.toLowerCase().includes("typecheck"))).toBe(true);
|
|
73
|
-
});
|
|
74
|
-
});
|
|
75
|
-
describe("presentScanDetails usage paths", () => {
|
|
76
|
-
it("maps wire usage.files into detailPresentation.usage.items[].paths", () => {
|
|
77
|
-
const bundle = buildScanPresentationBundle({
|
|
78
|
-
result: scanResultEslint,
|
|
79
|
-
pipelineStatus: "done",
|
|
80
|
-
});
|
|
81
|
-
const details = presentScanDetails(bundle, { scanId: SCAN_ID });
|
|
82
|
-
const eslintUsage = details.usage?.items.find((item) => item.packageName === "eslint");
|
|
83
|
-
expect(eslintUsage).toBeDefined();
|
|
84
|
-
expect(eslintUsage.paths).toEqual([".eslintrc.cjs"]);
|
|
85
|
-
expect(bundle.facts.packageUsage[0]?.paths).toEqual([]);
|
|
86
|
-
expect(bundle.facts.packageUsage[0]?.files).toEqual([".eslintrc.cjs"]);
|
|
87
|
-
});
|
|
88
|
-
it("deduplicates paths across paths, criticalPaths, and files buckets", () => {
|
|
89
|
-
const bundle = buildScanPresentationBundle({
|
|
90
|
-
result: scanResultFastifyRuntime,
|
|
91
|
-
pipelineStatus: "done",
|
|
92
|
-
});
|
|
93
|
-
const details = presentScanDetails(bundle, { scanId: SCAN_ID });
|
|
94
|
-
const fastifyUsage = details.usage?.items.find((item) => item.packageName === "fastify");
|
|
95
|
-
expect(fastifyUsage).toBeDefined();
|
|
96
|
-
expect(fastifyUsage.paths.length).toBeGreaterThan(0);
|
|
97
|
-
expect(fastifyUsage.paths).toContain("apps/api/src/server.ts");
|
|
98
|
-
expect(fastifyUsage.paths).toContain("apps/api/src/middleware/auth.ts");
|
|
99
|
-
expect(new Set(fastifyUsage.paths).size).toBe(fastifyUsage.paths.length);
|
|
100
|
-
});
|
|
101
|
-
});
|
|
102
|
-
describe("presentation parity across surfaces", () => {
|
|
103
|
-
it("same bundle drives card, details, GitHub, CLI with identical profile", () => {
|
|
104
|
-
const bundle = buildScanPresentationBundle({
|
|
105
|
-
result: scanResultFastifyRuntime,
|
|
106
|
-
pipelineStatus: "done",
|
|
107
|
-
});
|
|
108
|
-
const card = presentDashboardCard(bundle);
|
|
109
|
-
const details = presentScanDetails(bundle, { scanId: SCAN_ID });
|
|
110
|
-
const check = presentGitHubCheckRun(bundle, {
|
|
111
|
-
scanId: SCAN_ID,
|
|
112
|
-
webAppOrigin: ORIGIN,
|
|
113
|
-
});
|
|
114
|
-
const comment = presentGitHubPrComment(bundle);
|
|
115
|
-
const cli = presentCliScanSummary(bundle, { repoLabel: "acme/api" });
|
|
116
|
-
for (const dto of [details, check, comment, cli]) {
|
|
117
|
-
expect(dto.status).toBe(bundle.profile.status);
|
|
118
|
-
expect(dto.density).toBe(bundle.profile.density);
|
|
119
|
-
expect(dto.confidence).toBe(bundle.profile.confidence);
|
|
120
|
-
expect(dto.evidenceContext?.priority).toBe(bundle.profile.priority);
|
|
121
|
-
}
|
|
122
|
-
expect(card.verdict?.posture).toBe(bundle.profile.status);
|
|
123
|
-
expect(details.narrative.primaryPackage).toBe("fastify");
|
|
124
|
-
expect(check.title.toLowerCase()).toContain("fastify");
|
|
125
|
-
});
|
|
126
|
-
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"presentationPersonas.test.d.ts","sourceRoot":"","sources":["../../src/presentation/presentationPersonas.test.ts"],"names":[],"mappings":""}
|