@mergesignal/shared 0.4.0 → 0.4.2

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.
Files changed (76) hide show
  1. package/dist/deriveScanNarrative.d.ts.map +1 -1
  2. package/dist/deriveScanNarrative.js +52 -2
  3. package/dist/deriveScanNarrative.test.js +10 -3
  4. package/dist/fixtures/repoIntelligenceFixtures.d.ts.map +1 -1
  5. package/dist/fixtures/repoIntelligenceFixtures.js +21 -1
  6. package/dist/index.d.ts +1 -0
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +1 -0
  9. package/dist/narrativePresentation.d.ts.map +1 -1
  10. package/dist/narrativePresentation.js +6 -3
  11. package/dist/presentation/compose/narrativeCompose.d.ts.map +1 -1
  12. package/dist/presentation/compose/narrativeCompose.js +15 -101
  13. package/dist/presentation/dto/scanCardPresentation.d.ts +2 -0
  14. package/dist/presentation/dto/scanCardPresentation.d.ts.map +1 -1
  15. package/dist/presentation/dto/scanDetailsPresentation.d.ts +2 -0
  16. package/dist/presentation/dto/scanDetailsPresentation.d.ts.map +1 -1
  17. package/dist/presentation/fixtures/presentationPersonaFixtures.d.ts +11 -0
  18. package/dist/presentation/fixtures/presentationPersonaFixtures.d.ts.map +1 -0
  19. package/dist/presentation/fixtures/presentationPersonaFixtures.js +197 -0
  20. package/dist/presentation/index.d.ts +2 -0
  21. package/dist/presentation/index.d.ts.map +1 -1
  22. package/dist/presentation/index.js +1 -0
  23. package/dist/presentation/intent/applyPostureVocabularyGuard.d.ts +5 -0
  24. package/dist/presentation/intent/applyPostureVocabularyGuard.d.ts.map +1 -0
  25. package/dist/presentation/intent/applyPostureVocabularyGuard.js +44 -0
  26. package/dist/presentation/intent/derivePresentationInterpretation.d.ts +4 -0
  27. package/dist/presentation/intent/derivePresentationInterpretation.d.ts.map +1 -0
  28. package/dist/presentation/intent/derivePresentationInterpretation.js +202 -0
  29. package/dist/presentation/intent/formatPresentationCopy.d.ts +7 -0
  30. package/dist/presentation/intent/formatPresentationCopy.d.ts.map +1 -0
  31. package/dist/presentation/intent/formatPresentationCopy.js +153 -0
  32. package/dist/presentation/intent/packageDisplayName.d.ts +4 -0
  33. package/dist/presentation/intent/packageDisplayName.d.ts.map +1 -0
  34. package/dist/presentation/intent/packageDisplayName.js +17 -0
  35. package/dist/presentation/intent/postureVocabularyGuard.test.d.ts +2 -0
  36. package/dist/presentation/intent/postureVocabularyGuard.test.d.ts.map +1 -0
  37. package/dist/presentation/intent/postureVocabularyGuard.test.js +23 -0
  38. package/dist/presentation/intent/presentationIntent.d.ts +14 -0
  39. package/dist/presentation/intent/presentationIntent.d.ts.map +1 -0
  40. package/dist/presentation/intent/presentationIntent.js +1 -0
  41. package/dist/presentation/intent/presentationIntent.test.d.ts +2 -0
  42. package/dist/presentation/intent/presentationIntent.test.d.ts.map +1 -0
  43. package/dist/presentation/intent/presentationIntent.test.js +29 -0
  44. package/dist/presentation/intent/verificationFocusLabels.d.ts +2 -0
  45. package/dist/presentation/intent/verificationFocusLabels.d.ts.map +1 -0
  46. package/dist/presentation/intent/verificationFocusLabels.js +45 -0
  47. package/dist/presentation/presentation.test.js +3 -0
  48. package/dist/presentation/presentationPersonas.test.d.ts +2 -0
  49. package/dist/presentation/presentationPersonas.test.d.ts.map +1 -0
  50. package/dist/presentation/presentationPersonas.test.js +166 -0
  51. package/dist/presentation/presenters/presentScanCard.d.ts.map +1 -1
  52. package/dist/presentation/presenters/presentScanCard.js +1 -0
  53. package/dist/presentation/presenters/presentScanDetails.d.ts.map +1 -1
  54. package/dist/presentation/presenters/presentScanDetails.js +7 -1
  55. package/dist/presentation/profile/derivePresentationProfile.d.ts.map +1 -1
  56. package/dist/presentation/profile/derivePresentationProfile.js +18 -19
  57. package/dist/presentation/profile/presentationProfile.d.ts +2 -0
  58. package/dist/presentation/profile/presentationProfile.d.ts.map +1 -1
  59. package/dist/repoIntelligenceMappers.d.ts.map +1 -1
  60. package/dist/repoIntelligenceMappers.js +8 -1
  61. package/dist/repoIntelligenceSchema.d.ts +75 -1
  62. package/dist/repoIntelligenceSchema.d.ts.map +1 -1
  63. package/dist/repoIntelligenceSchema.js +74 -1
  64. package/dist/repoIntelligenceSemantics.d.ts +29 -0
  65. package/dist/repoIntelligenceSemantics.d.ts.map +1 -0
  66. package/dist/repoIntelligenceSemantics.js +146 -0
  67. package/dist/repoIntelligenceSemantics.test.d.ts +2 -0
  68. package/dist/repoIntelligenceSemantics.test.d.ts.map +1 -0
  69. package/dist/repoIntelligenceSemantics.test.js +63 -0
  70. package/dist/scanNarrativeFacts.d.ts +31 -0
  71. package/dist/scanNarrativeFacts.d.ts.map +1 -1
  72. package/dist/scanNarrativeFacts.js +2 -0
  73. package/dist/scanSurfaceCopy.d.ts +8 -0
  74. package/dist/scanSurfaceCopy.d.ts.map +1 -1
  75. package/dist/scanSurfaceCopy.js +8 -0
  76. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"deriveScanNarrative.d.ts","sourceRoot":"","sources":["../src/deriveScanNarrative.ts"],"names":[],"mappings":"AAMA,OAAO,EAaL,KAAK,kBAAkB,EACxB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,KAAK,EAKV,UAAU,EACX,MAAM,YAAY,CAAC;AAgapB;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,GACpC,kBAAkB,CAsGpB"}
1
+ {"version":3,"file":"deriveScanNarrative.d.ts","sourceRoot":"","sources":["../src/deriveScanNarrative.ts"],"names":[],"mappings":"AAOA,OAAO,EAeL,KAAK,kBAAkB,EACxB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,KAAK,EAKV,UAAU,EACX,MAAM,YAAY,CAAC;AA+dpB;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,GACpC,kBAAkB,CAwGpB"}
@@ -1,5 +1,6 @@
1
1
  import { extractRepositoryContextFacts } from "./extractRepositoryContextFacts.js";
2
2
  import { readBlastLevel, safeParseRepoIntelligence, } from "./repoIntelligenceSchema.js";
3
+ import { isRuntimeNarrativeSafe } from "./repoIntelligenceSemantics.js";
3
4
  import { EMPTY_SCAN_NARRATIVE_FACTS, NARRATIVE_FACT_MAX_AREAS, NARRATIVE_FACT_MAX_HOTSPOTS, NARRATIVE_FACT_MAX_PATHS, } from "./scanNarrativeFacts.js";
4
5
  import { mergePostureFromDecision } from "./riskVocabulary.js";
5
6
  import { selectTopAffectedAreas } from "./selectTopAffectedAreas.js";
@@ -124,14 +125,53 @@ function mergeGraphHotspots(codeHotspots, graphHotspots) {
124
125
  }
125
126
  return [...byName.values()].slice(0, NARRATIVE_FACT_MAX_HOTSPOTS);
126
127
  }
128
+ function projectPackageSemanticsFromWire(pkgIntel) {
129
+ if (!pkgIntel)
130
+ return null;
131
+ return {
132
+ dependencyClass: pkgIntel.dependencyClass ?? null,
133
+ packageRole: pkgIntel.packageRole ?? null,
134
+ runtimeImpact: pkgIntel.runtimeImpact ?? null,
135
+ expectedImpact: pkgIntel.expectedImpact ?? null,
136
+ suppressRuntimeNarrative: pkgIntel.suppressRuntimeNarrative === true,
137
+ evidenceStrength: pkgIntel.evidenceStrength ?? null,
138
+ verificationFocus: pkgIntel.verificationFocus ?? [],
139
+ };
140
+ }
141
+ function projectChangedPackageSemantics(ri, changed) {
142
+ return changed.all.map((packageName) => {
143
+ const pkgIntel = ri.packages?.[packageName];
144
+ const usage = pkgIntel?.usage;
145
+ const paths = usage?.paths ?? [];
146
+ const criticalPaths = usage?.criticalPaths ?? [];
147
+ const areas = usage?.areas ?? [];
148
+ const summary = projectPackageSemanticsFromWire(pkgIntel);
149
+ return {
150
+ packageName,
151
+ dependencyClass: summary?.dependencyClass ?? null,
152
+ packageRole: summary?.packageRole ?? null,
153
+ runtimeImpact: summary?.runtimeImpact ?? null,
154
+ expectedImpact: summary?.expectedImpact ?? null,
155
+ suppressRuntimeNarrative: summary?.suppressRuntimeNarrative ?? false,
156
+ evidenceStrength: summary?.evidenceStrength ?? null,
157
+ verificationFocus: summary?.verificationFocus ?? [],
158
+ usagePathCount: paths.length + criticalPaths.length,
159
+ usageAreaCount: areas.length,
160
+ };
161
+ });
162
+ }
127
163
  function extractTier1FromRepoIntelligence(ri, changed) {
128
164
  const primary = changed.primary;
129
165
  const pkgIntel = primary && ri.packages?.[primary] ? ri.packages[primary] : undefined;
130
166
  const packageUsage = collectPackageUsageForChanged(ri, changed);
131
167
  const frameworks = collectFrameworks(ri);
132
168
  const paths = allUsagePaths(packageUsage);
133
- const runtimeKind = pkgIntel?.runtimeSurface ?? null;
134
- const reachKind = pkgIntel?.reachability ?? null;
169
+ const suppressRuntime = pkgIntel?.suppressRuntimeNarrative === true;
170
+ const narrativeSafe = isRuntimeNarrativeSafe(pkgIntel);
171
+ const runtimeKind = narrativeSafe && !suppressRuntime
172
+ ? (pkgIntel?.runtimeSurface ?? null)
173
+ : null;
174
+ const reachKind = narrativeSafe && !suppressRuntime ? (pkgIntel?.reachability ?? null) : null;
135
175
  const runtimeSurface = runtimeKind != null
136
176
  ? {
137
177
  kind: runtimeKind,
@@ -150,6 +190,8 @@ function extractTier1FromRepoIntelligence(ri, changed) {
150
190
  },
151
191
  }
152
192
  : null;
193
+ const packageSemantics = projectPackageSemanticsFromWire(pkgIntel);
194
+ const changedPackageSemantics = projectChangedPackageSemantics(ri, changed);
153
195
  const blastFromRi = ri.blastRadius;
154
196
  const blastLevel = readBlastLevel(blastFromRi?.level) ??
155
197
  (changed.all.length > 0
@@ -181,6 +223,8 @@ function extractTier1FromRepoIntelligence(ri, changed) {
181
223
  frameworks,
182
224
  runtimeSurface,
183
225
  reachability,
226
+ packageSemantics,
227
+ changedPackageSemantics,
184
228
  blastRadius,
185
229
  affectedAreas: affectedAreas.slice(0, NARRATIVE_FACT_MAX_AREAS),
186
230
  hotspots: codeHotspots.slice(0, NARRATIVE_FACT_MAX_HOTSPOTS),
@@ -191,6 +235,8 @@ function hasMeaningfulTier1(tier1) {
191
235
  tier1.frameworks.length > 0 ||
192
236
  tier1.runtimeSurface != null ||
193
237
  tier1.reachability != null ||
238
+ tier1.packageSemantics?.expectedImpact != null ||
239
+ tier1.changedPackageSemantics.length > 0 ||
194
240
  tier1.blastRadius != null ||
195
241
  tier1.affectedAreas.length > 0 ||
196
242
  tier1.hotspots.length > 0);
@@ -271,6 +317,8 @@ function emptyTier1Blocks() {
271
317
  frameworks: [],
272
318
  runtimeSurface: null,
273
319
  reachability: null,
320
+ packageSemantics: null,
321
+ changedPackageSemantics: [],
274
322
  blastRadius: null,
275
323
  affectedAreas: [],
276
324
  hotspots: [],
@@ -369,6 +417,8 @@ export function deriveScanNarrative(result) {
369
417
  frameworks: tier1Blocks.frameworks,
370
418
  runtimeSurface: tier1Blocks.runtimeSurface,
371
419
  reachability: tier1Blocks.reachability,
420
+ packageSemantics: tier1Blocks.packageSemantics,
421
+ changedPackageSemantics: tier1Blocks.changedPackageSemantics,
372
422
  blastRadius: tier1Blocks.blastRadius,
373
423
  affectedAreas,
374
424
  hotspots: tier1Blocks.hotspots,
@@ -112,7 +112,7 @@ describe("deriveScanNarrative", () => {
112
112
  expect(facts.repositoryContext.length).toBeGreaterThan(0);
113
113
  expect(facts.repositoryContext[0]?.family).toBe("transitive_volume");
114
114
  });
115
- it("populates build-only runtime surface from repoIntelligence", () => {
115
+ it("populates tooling semantics without runtime surface chips for typescript", () => {
116
116
  const result = {
117
117
  ...baseResult,
118
118
  changedPackages: ["typescript"],
@@ -121,8 +121,15 @@ describe("deriveScanNarrative", () => {
121
121
  };
122
122
  const facts = deriveScanNarrative(result);
123
123
  expect(facts.availability.mode).toBe("pr_intelligence");
124
- expect(facts.runtimeSurface?.kind).toBe("build");
125
- expect(facts.reachability?.kind).toBe("build_only");
124
+ expect(facts.runtimeSurface).toBeNull();
125
+ expect(facts.reachability).toBeNull();
126
+ expect(facts.packageSemantics?.runtimeImpact).toBe("none");
127
+ expect(facts.packageSemantics?.expectedImpact).toBe("typecheck");
128
+ expect(facts.packageSemantics?.suppressRuntimeNarrative).toBe(true);
129
+ expect(facts.packageSemantics?.dependencyClass).toBe("tooling");
130
+ expect(facts.packageSemantics?.packageRole).toBe("typechecker");
131
+ expect(facts.changedPackageSemantics).toHaveLength(1);
132
+ expect(facts.changedPackageSemantics[0]?.packageName).toBe("typescript");
126
133
  expect(facts.blastRadius?.level).toBe("narrow");
127
134
  });
128
135
  it("extracts packageUsage for all changed packages with blast factors and frameworks", () => {
@@ -1 +1 @@
1
- {"version":3,"file":"repoIntelligenceFixtures.d.ts","sourceRoot":"","sources":["../../src/fixtures/repoIntelligenceFixtures.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAErE,iEAAiE;AACjE,eAAO,MAAM,8BAA8B,EAAE,gBAmC5C,CAAC;AAEF,sDAAsD;AACtD,eAAO,MAAM,iCAAiC,EAAE,gBAc/C,CAAC;AAEF,wDAAwD;AACxD,eAAO,MAAM,mCAAmC,EAAE,gBAgDjD,CAAC"}
1
+ {"version":3,"file":"repoIntelligenceFixtures.d.ts","sourceRoot":"","sources":["../../src/fixtures/repoIntelligenceFixtures.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAErE,iEAAiE;AACjE,eAAO,MAAM,8BAA8B,EAAE,gBAgD5C,CAAC;AAEF,sDAAsD;AACtD,eAAO,MAAM,iCAAiC,EAAE,gBAqB/C,CAAC;AAEF,wDAAwD;AACxD,eAAO,MAAM,mCAAmC,EAAE,gBAgDjD,CAAC"}
@@ -4,6 +4,19 @@ export const fixtureRepoIntelligenceFastify = {
4
4
  fastify: {
5
5
  runtimeSurface: "runtime",
6
6
  reachability: "on_runtime_paths",
7
+ runtimeImpact: "confirmed",
8
+ expectedImpact: "runtime",
9
+ evidenceStrength: "high",
10
+ suppressRuntimeNarrative: false,
11
+ dependencyClass: "runtime",
12
+ packageRole: "http_framework",
13
+ verificationFocus: [
14
+ "routes",
15
+ "middleware",
16
+ "auth_flow",
17
+ "serialization",
18
+ "error_handling",
19
+ ],
7
20
  usage: {
8
21
  packageName: "fastify",
9
22
  files: [
@@ -23,7 +36,7 @@ export const fixtureRepoIntelligenceFastify = {
23
36
  changedPackageCount: 1,
24
37
  },
25
38
  applicationAreas: [
26
- { id: "api", label: "API routes" },
39
+ { id: "api", label: "API request handling" },
27
40
  { id: "auth", label: "Auth middleware" },
28
41
  ],
29
42
  hotspots: [
@@ -41,6 +54,13 @@ export const fixtureRepoIntelligenceTypescript = {
41
54
  typescript: {
42
55
  runtimeSurface: "build",
43
56
  reachability: "build_only",
57
+ runtimeImpact: "none",
58
+ expectedImpact: "typecheck",
59
+ evidenceStrength: "medium",
60
+ suppressRuntimeNarrative: true,
61
+ dependencyClass: "tooling",
62
+ packageRole: "typechecker",
63
+ verificationFocus: ["ci", "typecheck"],
44
64
  usage: {
45
65
  packageName: "typescript",
46
66
  files: ["tsconfig.json"],
package/dist/index.d.ts CHANGED
@@ -14,6 +14,7 @@ export * from "./deriveCardDisplaySummary.js";
14
14
  export * from "./scanNarrativeFacts.js";
15
15
  export * from "./repoIntelligenceSchema.js";
16
16
  export * from "./repoIntelligenceMappers.js";
17
+ export * from "./repoIntelligenceSemantics.js";
17
18
  export * from "./repoIntelligenceValidation.js";
18
19
  export * from "./deriveScanNarrative.js";
19
20
  export * from "./extractRepositoryContextFacts.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,wCAAwC,CAAC;AACvD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iCAAiC,CAAC;AAChD,cAAc,0BAA0B,CAAC;AACzC,cAAc,oCAAoC,CAAC;AACnD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC;AAChD,OAAO,EACL,wCAAwC,EACxC,wBAAwB,GACzB,MAAM,6BAA6B,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sCAAsC,CAAC;AACrD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,wCAAwC,CAAC;AACvD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAChD,cAAc,0BAA0B,CAAC;AACzC,cAAc,oCAAoC,CAAC;AACnD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iCAAiC,CAAC;AAChD,OAAO,EACL,wCAAwC,EACxC,wBAAwB,GACzB,MAAM,6BAA6B,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sCAAsC,CAAC;AACrD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC"}
package/dist/index.js CHANGED
@@ -14,6 +14,7 @@ export * from "./deriveCardDisplaySummary.js";
14
14
  export * from "./scanNarrativeFacts.js";
15
15
  export * from "./repoIntelligenceSchema.js";
16
16
  export * from "./repoIntelligenceMappers.js";
17
+ export * from "./repoIntelligenceSemantics.js";
17
18
  export * from "./repoIntelligenceValidation.js";
18
19
  export * from "./deriveScanNarrative.js";
19
20
  export * from "./extractRepositoryContextFacts.js";
@@ -1 +1 @@
1
- {"version":3,"file":"narrativePresentation.d.ts","sourceRoot":"","sources":["../src/narrativePresentation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"narrativePresentation.d.ts","sourceRoot":"","sources":["../src/narrativePresentation.ts"],"names":[],"mappings":"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"}
@@ -147,12 +147,15 @@ export function formatFrameworksSummary(facts, max = 2) {
147
147
  }
148
148
  export function composeContextLineFromFacts(facts, options = {}) {
149
149
  const parts = [];
150
- const runtime = labelRuntimeSurface(facts);
151
- const reach = summarizeReachability(facts, options.includePathSample ? 1 : 0);
150
+ const suppressRuntime = facts.packageSemantics?.suppressRuntimeNarrative === true;
151
+ const runtime = suppressRuntime ? null : labelRuntimeSurface(facts);
152
+ const reach = suppressRuntime
153
+ ? null
154
+ : summarizeReachability(facts, options.includePathSample ? 1 : 0);
152
155
  const blast = labelBlastRadiusLevel(facts);
153
156
  if (runtime)
154
157
  parts.push(runtime);
155
- if (reach.kindLabel) {
158
+ if (reach?.kindLabel) {
156
159
  if (options.includePathSample && reach.pathSamples[0]) {
157
160
  parts.push(`${reach.kindLabel} (${reach.pathSamples[0]})`);
158
161
  }
@@ -1 +1 @@
1
- {"version":3,"file":"narrativeCompose.d.ts","sourceRoot":"","sources":["../../../src/presentation/compose/narrativeCompose.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AASzF,wBAAgB,eAAe,CAAC,MAAM,EAAE,sBAAsB,GAAG,MAAM,CAwCtE;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,sBAAsB,GAC7B,MAAM,GAAG,SAAS,CAIpB;AAED,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,sBAAsB,EAC9B,GAAG,EAAE,MAAM,GACV,MAAM,EAAE,CA2EV;AAED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,sBAAsB,EAC9B,GAAG,EAAE,MAAM,GACV,MAAM,EAAE,CA0BV;AAED,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,sBAAsB,EAC9B,GAAG,EAAE,MAAM,GACV,MAAM,EAAE,CAQV;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,sBAAsB,EAC9B,GAAG,EAAE,MAAM,GACV,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAiBzC;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,sBAAsB,GAC7B,MAAM,EAAE,GAAG,SAAS,CAwBtB;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,sBAAsB,GAAG;IAC1E,QAAQ,EAAE,iBAAiB,GAAG,SAAS,CAAC;IACxC,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAKA"}
1
+ {"version":3,"file":"narrativeCompose.d.ts","sourceRoot":"","sources":["../../../src/presentation/compose/narrativeCompose.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AASzF,wBAAgB,eAAe,CAAC,MAAM,EAAE,sBAAsB,GAAG,MAAM,CAOtE;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,sBAAsB,GAC7B,MAAM,GAAG,SAAS,CAIpB;AAED,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,sBAAsB,EAC9B,GAAG,EAAE,MAAM,GACV,MAAM,EAAE,CAQV;AAED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,sBAAsB,EAC9B,GAAG,EAAE,MAAM,GACV,MAAM,EAAE,CAOV;AAED,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,sBAAsB,EAC9B,GAAG,EAAE,MAAM,GACV,MAAM,EAAE,CAQV;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,sBAAsB,EAC9B,GAAG,EAAE,MAAM,GACV,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAmBzC;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,sBAAsB,GAC7B,MAAM,EAAE,GAAG,SAAS,CAwBtB;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,sBAAsB,GAAG;IAC1E,QAAQ,EAAE,iBAAiB,GAAG,SAAS,CAAC;IACxC,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAKA"}
@@ -1,6 +1,7 @@
1
1
  import { formatCardAreaLabels } from "../../formatCardAreaLabels.js";
2
- import { composeVerificationPrompt, formatChangedPackagesShort, labelBlastRadiusLevel, labelReachabilityKind, labelRuntimeSurface, selectReviewerGuidance, summarizeBlastRadius, summarizePackageUsage, } from "../../narrativePresentation.js";
2
+ import { formatChangedPackagesShort, labelBlastRadiusLevel, labelReachabilityKind, labelRuntimeSurface, } from "../../narrativePresentation.js";
3
3
  import { scanSurfaceCopy } from "../../scanSurfaceCopy.js";
4
+ import { formatPresentationHeadline, formatPresentationKeyPoints, formatPresentationVerification, } from "../intent/formatPresentationCopy.js";
4
5
  function topAreaLabel(bundle) {
5
6
  const area = bundle.facts.affectedAreas[0];
6
7
  if (!area)
@@ -10,29 +11,7 @@ function topAreaLabel(bundle) {
10
11
  }
11
12
  export function composeHeadline(bundle) {
12
13
  const { facts, profile } = bundle;
13
- const primary = facts.changedPackages.primary;
14
- if (profile.priority === "limited") {
15
- return scanSurfaceCopy.presentation.limitedContextHeadline;
16
- }
17
- if (!primary) {
18
- return scanSurfaceCopy.presentation.noChangedPackagesHeadline;
19
- }
20
- const runtime = facts.runtimeSurface?.kind === "runtime";
21
- const area = topAreaLabel(bundle);
22
- if (facts.changedPackages.all.length > 1 && runtime) {
23
- return scanSurfaceCopy.presentation.multiRuntimeHeadline;
24
- }
25
- if (facts.runtimeSurface?.kind === "build" ||
26
- facts.reachability?.kind === "build_only") {
27
- return scanSurfaceCopy.presentation.buildOnlyHeadline.replace("{package}", primary);
28
- }
29
- if (runtime) {
30
- const surface = area ?? labelRuntimeSurface(facts) ?? "application code";
31
- return scanSurfaceCopy.presentation.runtimeHeadline
32
- .replace("{package}", primary)
33
- .replace("{surface}", surface);
34
- }
35
- return scanSurfaceCopy.presentation.defaultUpgradeHeadline.replace("{package}", primary);
14
+ return formatPresentationHeadline(profile.interpretation, facts, profile.status);
36
15
  }
37
16
  export function composeSubheadline(bundle) {
38
17
  const { profile } = bundle;
@@ -42,78 +21,11 @@ export function composeSubheadline(bundle) {
42
21
  }
43
22
  export function composeKeyPoints(bundle, max) {
44
23
  const { facts, profile } = bundle;
45
- const points = [];
46
- if (profile.priority === "limited") {
47
- points.push(scanSurfaceCopy.presentation.limitedContextKeyPoint);
48
- if (facts.changedPackages.primary) {
49
- points.push(scanSurfaceCopy.presentation.changedPackageKeyPoint.replace("{package}", facts.changedPackages.primary));
50
- }
51
- return points.slice(0, max);
52
- }
53
- const usage = summarizePackageUsage(facts, { maxPaths: 2 });
54
- if (usage && usage.pathCount > 0) {
55
- if (usage.pathCount === 1 && usage.pathSamples[0]) {
56
- points.push(scanSurfaceCopy.presentation.usedInPathsSingle.replace("{path}", usage.pathSamples[0]));
57
- }
58
- else {
59
- points.push(scanSurfaceCopy.presentation.usedInPathsMultiple.replace("{count}", String(usage.pathCount)));
60
- }
61
- }
62
- else if (profile.density === "minimal") {
63
- points.push(scanSurfaceCopy.presentation.noRuntimePathsKeyPoint);
64
- }
65
- const blast = summarizeBlastRadius(facts, 2);
66
- if (blast.levelLabel) {
67
- if (blast.levelLabel.toLowerCase().includes("wide")) {
68
- points.push(scanSurfaceCopy.presentation.blastRadiusWideKeyPoint);
69
- }
70
- else if (profile.density === "rich") {
71
- points.push(scanSurfaceCopy.presentation.blastRadiusLevelKeyPoint.replace("{level}", blast.levelLabel));
72
- }
73
- }
74
- if (facts.affectedAreas.length === 0 && profile.density === "minimal") {
75
- points.push(scanSurfaceCopy.presentation.noAffectedAreasKeyPoint);
76
- }
77
- else if (facts.affectedAreas.length > 0) {
78
- const labels = facts.affectedAreas
79
- .slice(0, 2)
80
- .map((a) => a.label)
81
- .join(", ");
82
- points.push(scanSurfaceCopy.presentation.affectedAreasKeyPoint.replace("{areas}", labels));
83
- }
84
- const guidance = selectReviewerGuidance(facts, { scope: "changed", max: 2 });
85
- for (const g of guidance) {
86
- const msg = g.message.trim();
87
- if (msg && !points.includes(msg))
88
- points.push(msg);
89
- if (points.length >= max)
90
- break;
91
- }
92
- return points.slice(0, max);
24
+ return formatPresentationKeyPoints(profile.interpretation, facts, profile.status, max);
93
25
  }
94
26
  export function composeVerificationActions(bundle, max) {
95
- const { facts, profile } = bundle;
96
- const actions = [];
97
- const guidance = selectReviewerGuidance(facts, { scope: "changed", max: 4 });
98
- for (const g of guidance) {
99
- const rem = g.remediation?.trim();
100
- if (rem)
101
- actions.push(rem);
102
- }
103
- const prompt = composeVerificationPrompt(facts);
104
- if (prompt && !actions.includes(prompt))
105
- actions.push(prompt);
106
- if (actions.length === 0) {
107
- if (profile.density === "minimal" ||
108
- facts.runtimeSurface?.kind === "build") {
109
- actions.push(scanSurfaceCopy.presentation.verifyCiTypecheck);
110
- }
111
- else if (profile.density === "rich") {
112
- actions.push(scanSurfaceCopy.presentation.verifyAuthFlow);
113
- actions.push(scanSurfaceCopy.presentation.verifyErrorResponses);
114
- }
115
- }
116
- return actions.slice(0, max);
27
+ const { profile } = bundle;
28
+ return formatPresentationVerification(profile.interpretation, profile.status, max);
117
29
  }
118
30
  export function composeAffectedAreaLabels(bundle, max) {
119
31
  const labels = [];
@@ -127,14 +39,16 @@ export function composeAffectedAreaLabels(bundle, max) {
127
39
  return labels;
128
40
  }
129
41
  export function composeEvidenceRows(bundle, max) {
130
- const { facts } = bundle;
42
+ const { facts, profile } = bundle;
131
43
  const rows = [];
132
- const runtime = labelRuntimeSurface(facts);
133
- if (runtime)
134
- rows.push({ label: "Runtime", value: runtime });
135
- const reach = labelReachabilityKind(facts);
136
- if (reach)
137
- rows.push({ label: "Reachability", value: reach });
44
+ if (!profile.interpretation.suppressRuntimeNarrative) {
45
+ const runtime = labelRuntimeSurface(facts);
46
+ if (runtime)
47
+ rows.push({ label: "Runtime", value: runtime });
48
+ const reach = labelReachabilityKind(facts);
49
+ if (reach)
50
+ rows.push({ label: "Reachability", value: reach });
51
+ }
138
52
  const blast = labelBlastRadiusLevel(facts);
139
53
  if (blast)
140
54
  rows.push({ label: "Blast radius", value: blast });
@@ -1,4 +1,5 @@
1
1
  import type { FindingCountSummary, PresentationConfidence, PresentationDensity, PresentationEvidenceContext, PresentationEvidenceRow, PresentationStatus } from "./types.js";
2
+ import type { PresentationIntent } from "../intent/presentationIntent.js";
2
3
  export type ScanCardPresentation = {
3
4
  pipeline?: {
4
5
  status: "queued" | "running" | "failed";
@@ -21,5 +22,6 @@ export type ScanCardPresentation = {
21
22
  riskIndex?: number | null;
22
23
  findingCounts?: FindingCountSummary | null;
23
24
  actionLabel?: string;
25
+ presentationIntent?: PresentationIntent;
24
26
  };
25
27
  //# sourceMappingURL=scanCardPresentation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scanCardPresentation.d.ts","sourceRoot":"","sources":["../../../src/presentation/dto/scanCardPresentation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,sBAAsB,EACtB,mBAAmB,EACnB,2BAA2B,EAC3B,uBAAuB,EACvB,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,CAAC,EAAE;QACT,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;QACxC,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IAEF,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B,UAAU,CAAC,EAAE,sBAAsB,CAAC;IACpC,eAAe,CAAC,EAAE,2BAA2B,CAAC;IAC9C,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,QAAQ,EAAE,uBAAuB,EAAE,CAAC;IAEpC,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAE7B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,aAAa,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC"}
1
+ {"version":3,"file":"scanCardPresentation.d.ts","sourceRoot":"","sources":["../../../src/presentation/dto/scanCardPresentation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,sBAAsB,EACtB,mBAAmB,EACnB,2BAA2B,EAC3B,uBAAuB,EACvB,kBAAkB,EACnB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAE1E,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,CAAC,EAAE;QACT,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;QACxC,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IAEF,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B,UAAU,CAAC,EAAE,sBAAsB,CAAC;IACpC,eAAe,CAAC,EAAE,2BAA2B,CAAC;IAC9C,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,QAAQ,EAAE,uBAAuB,EAAE,CAAC;IAEpC,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAE7B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,aAAa,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;CACzC,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import type { PresentationConfidence, PresentationDensity, PresentationEvidenceContext, PresentationStatus } from "./types.js";
2
+ import type { PresentationIntent } from "../intent/presentationIntent.js";
2
3
  import type { FindingSeverity, ScoreLayer } from "../../types.js";
3
4
  export type ScanDetailsPresentation = {
4
5
  evidenceContext: PresentationEvidenceContext;
@@ -107,5 +108,6 @@ export type ScanDetailsPresentation = {
107
108
  methodologyVersion?: string | null;
108
109
  changedPackagesSummary?: string;
109
110
  };
111
+ presentationIntent?: PresentationIntent;
110
112
  };
111
113
  //# sourceMappingURL=scanDetailsPresentation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scanDetailsPresentation.d.ts","sourceRoot":"","sources":["../../../src/presentation/dto/scanDetailsPresentation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,mBAAmB,EACnB,2BAA2B,EAC3B,kBAAkB,EACnB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAElE,MAAM,MAAM,uBAAuB,GAAG;IACpC,eAAe,EAAE,2BAA2B,CAAC;IAC7C,MAAM,EAAE,kBAAkB,CAAC;IAC3B,OAAO,EAAE,mBAAmB,CAAC;IAC7B,UAAU,EAAE,sBAAsB,CAAC;IAEnC,IAAI,EAAE;QACJ,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC3B,CAAC;IAEF,SAAS,EAAE;QACT,SAAS,EAAE,MAAM,EAAE,CAAC;QACpB,eAAe,EAAE,MAAM,EAAE,CAAC;QAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;IAEF,KAAK,CAAC,EAAE;QACN,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,KAAK,CAAC;YACX,WAAW,EAAE,MAAM,CAAC;YACpB,KAAK,EAAE,MAAM,EAAE,CAAC;YAChB,KAAK,EAAE,MAAM,EAAE,CAAC;YAChB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;SAC1B,CAAC,CAAC;QACH,UAAU,EAAE,MAAM,EAAE,CAAC;KACtB,CAAC;IAEF,YAAY,EAAE;QACZ,OAAO,EAAE,KAAK,CAAC;YACb,KAAK,EAAE,MAAM,CAAC;YACd,MAAM,CAAC,EAAE,MAAM,CAAC;YAChB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;SAC1B,CAAC,CAAC;KACJ,CAAC;IAEF,aAAa,CAAC,EAAE;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,IAAI,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;QAChC,MAAM,EAAE,KAAK,CAAC;YACZ,KAAK,EAAE,UAAU,CAAC;YAClB,KAAK,EAAE,MAAM,CAAC;YACd,IAAI,EAAE,MAAM,CAAC;YACb,KAAK,EAAE,MAAM,CAAC;SACf,CAAC,CAAC;KACJ,CAAC;IAEF,iBAAiB,EAAE;QACjB,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC;QACtC,KAAK,EAAE,KAAK,CAAC;YACX,OAAO,EAAE,MAAM,CAAC;YAChB,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,MAAM,CAAC,EAAE,MAAM,CAAC;YAChB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;SAC1B,CAAC,CAAC;QACH,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,CAAC;IAEF,eAAe,EAAE;QACf,KAAK,EAAE,KAAK,CAAC;YACX,IAAI,EAAE,MAAM,CAAC;YACb,KAAK,EAAE,MAAM,CAAC;YACd,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;YACpC,SAAS,CAAC,EAAE,MAAM,CAAC;SACpB,CAAC,CAAC;KACJ,CAAC;IAEF,QAAQ,EAAE;QACR,gBAAgB,EAAE,OAAO,CAAC;QAC1B,cAAc,EAAE,KAAK,CAAC;YACpB,YAAY,EAAE,MAAM,CAAC;YACrB,kBAAkB,EAAE,MAAM,CAAC;YAC3B,QAAQ,EAAE,KAAK,CAAC;gBACd,IAAI,EAAE,MAAM,CAAC;gBACb,OAAO,CAAC,EAAE,MAAM,CAAC;gBACjB,MAAM,EAAE,OAAO,CAAC;gBAChB,QAAQ,CAAC,EAAE,eAAe,CAAC;gBAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;aACnB,CAAC,CAAC;YACH,aAAa,EAAE,MAAM,CAAC;SACvB,CAAC,CAAC;QACH,QAAQ,EAAE,KAAK,CAAC;YACd,EAAE,EAAE,MAAM,CAAC;YACX,QAAQ,EAAE,eAAe,CAAC;YAC1B,KAAK,EAAE,MAAM,CAAC;YACd,WAAW,EAAE,MAAM,CAAC;YACpB,WAAW,EAAE,MAAM,CAAC;YACpB,cAAc,CAAC,EAAE,MAAM,CAAC;YACxB,MAAM,EAAE,YAAY,GAAG,MAAM,CAAC;SAC/B,CAAC,CAAC;QACH,qBAAqB,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,EAAE;YACT,WAAW,EAAE,MAAM,CAAC;YACpB,OAAO,EAAE,KAAK,CAAC;gBACb,WAAW,EAAE,MAAM,CAAC;gBACpB,KAAK,EAAE,MAAM,CAAC;gBACd,MAAM,EAAE,OAAO,CAAC;gBAChB,GAAG,EAAE,MAAM,EAAE,CAAC;aACf,CAAC,CAAC;SACJ,CAAC;KACH,CAAC;IAEF,iBAAiB,CAAC,EAAE;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,EAAE,CAAC;KACjB,CAAC;IAEF,QAAQ,EAAE;QACR,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACnC,sBAAsB,CAAC,EAAE,MAAM,CAAC;KACjC,CAAC;CACH,CAAC"}
1
+ {"version":3,"file":"scanDetailsPresentation.d.ts","sourceRoot":"","sources":["../../../src/presentation/dto/scanDetailsPresentation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { ScanResult } from "../../types.js";
2
+ import { scanResultFastifyRuntime, scanResultLimitedContext, scanResultTypescriptPatch } from "./scanResultFixtures.js";
3
+ export declare const scanResultEslint: ScanResult;
4
+ export declare const scanResultPrettier: ScanResult;
5
+ export declare const scanResultVitest: ScanResult;
6
+ export declare const scanResultNextAuth: ScanResult;
7
+ export declare const scanResultBullmq: ScanResult;
8
+ export declare const scanResultUnknownSafe: ScanResult;
9
+ export declare const scanResultMixedTypescriptFastify: ScanResult;
10
+ export { scanResultFastifyRuntime, scanResultLimitedContext, scanResultTypescriptPatch, };
11
+ //# sourceMappingURL=presentationPersonaFixtures.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presentationPersonaFixtures.d.ts","sourceRoot":"","sources":["../../../src/presentation/fixtures/presentationPersonaFixtures.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAMjD,OAAO,EACL,wBAAwB,EACxB,wBAAwB,EACxB,yBAAyB,EAC1B,MAAM,yBAAyB,CAAC;AA8JjC,eAAO,MAAM,gBAAgB,EAAE,UAG7B,CAAC;AAEH,eAAO,MAAM,kBAAkB,EAAE,UAG/B,CAAC;AAEH,eAAO,MAAM,gBAAgB,EAAE,UAG7B,CAAC;AAEH,eAAO,MAAM,kBAAkB,EAAE,UAS/B,CAAC;AAEH,eAAO,MAAM,gBAAgB,EAAE,UAS7B,CAAC;AAEH,eAAO,MAAM,qBAAqB,EAAE,UAGlC,CAAC;AAEH,eAAO,MAAM,gCAAgC,EAAE,UAS7C,CAAC;AAEH,OAAO,EACL,wBAAwB,EACxB,wBAAwB,EACxB,yBAAyB,GAC1B,CAAC"}