projscan 4.9.3 → 4.11.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.
Files changed (220) hide show
  1. package/README.md +49 -8
  2. package/dist/analyzers/securityCheck.js +33 -15
  3. package/dist/analyzers/securityCheck.js.map +1 -1
  4. package/dist/analyzers/supplyChainCheck.js +9 -2
  5. package/dist/analyzers/supplyChainCheck.js.map +1 -1
  6. package/dist/cli/commands/assess.d.ts +3 -0
  7. package/dist/cli/commands/assess.js +143 -0
  8. package/dist/cli/commands/assess.js.map +1 -0
  9. package/dist/cli/commands/bugHunt.js +3 -1
  10. package/dist/cli/commands/bugHunt.js.map +1 -1
  11. package/dist/cli/commands/ci.js +29 -13
  12. package/dist/cli/commands/ci.js.map +1 -1
  13. package/dist/cli/commands/dogfood.js +2 -0
  14. package/dist/cli/commands/dogfood.js.map +1 -1
  15. package/dist/cli/commands/feedback.js +21 -2
  16. package/dist/cli/commands/feedback.js.map +1 -1
  17. package/dist/cli/commands/init.js +3 -0
  18. package/dist/cli/commands/init.js.map +1 -1
  19. package/dist/cli/commands/route.js +3 -2
  20. package/dist/cli/commands/route.js.map +1 -1
  21. package/dist/cli/commands/simulate.d.ts +3 -0
  22. package/dist/cli/commands/simulate.js +125 -0
  23. package/dist/cli/commands/simulate.js.map +1 -0
  24. package/dist/cli/registerCommands.js +4 -0
  25. package/dist/cli/registerCommands.js.map +1 -1
  26. package/dist/core/adoption.js +50 -21
  27. package/dist/core/adoption.js.map +1 -1
  28. package/dist/core/agentBrief.js +2 -1
  29. package/dist/core/agentBrief.js.map +1 -1
  30. package/dist/core/assess.d.ts +9 -0
  31. package/dist/core/assess.js +119 -0
  32. package/dist/core/assess.js.map +1 -0
  33. package/dist/core/bugHunt.js +51 -22
  34. package/dist/core/bugHunt.js.map +1 -1
  35. package/dist/core/bugHuntHotspotFindings.js +2 -1
  36. package/dist/core/bugHuntHotspotFindings.js.map +1 -1
  37. package/dist/core/ciGate.d.ts +10 -0
  38. package/dist/core/ciGate.js +21 -0
  39. package/dist/core/ciGate.js.map +1 -0
  40. package/dist/core/dogfood.d.ts +1 -0
  41. package/dist/core/dogfood.js +42 -20
  42. package/dist/core/dogfood.js.map +1 -1
  43. package/dist/core/dogfoodDiscovery.d.ts +8 -0
  44. package/dist/core/dogfoodDiscovery.js +119 -0
  45. package/dist/core/dogfoodDiscovery.js.map +1 -0
  46. package/dist/core/feedback.js +73 -5
  47. package/dist/core/feedback.js.map +1 -1
  48. package/dist/core/fileInspectionReport.js +37 -0
  49. package/dist/core/fileInspectionReport.js.map +1 -1
  50. package/dist/core/intentRouterArchitectureKeywordWeights.d.ts +1 -0
  51. package/dist/core/intentRouterArchitectureKeywordWeights.js +69 -0
  52. package/dist/core/intentRouterArchitectureKeywordWeights.js.map +1 -0
  53. package/dist/core/intentRouterCatalog.js +85 -31
  54. package/dist/core/intentRouterCatalog.js.map +1 -1
  55. package/dist/core/intentRouterDependencyKeywordWeights.d.ts +1 -0
  56. package/dist/core/intentRouterDependencyKeywordWeights.js +100 -0
  57. package/dist/core/intentRouterDependencyKeywordWeights.js.map +1 -0
  58. package/dist/core/intentRouterFileImpactKeywordWeights.d.ts +1 -0
  59. package/dist/core/intentRouterFileImpactKeywordWeights.js +92 -0
  60. package/dist/core/intentRouterFileImpactKeywordWeights.js.map +1 -0
  61. package/dist/core/intentRouterKeywordEarlyGuards.js +8 -3
  62. package/dist/core/intentRouterKeywordEarlyGuards.js.map +1 -1
  63. package/dist/core/intentRouterKeywordSearchGuards.js +28 -24
  64. package/dist/core/intentRouterKeywordSearchGuards.js.map +1 -1
  65. package/dist/core/intentRouterKeywordToolGuards.js +43 -0
  66. package/dist/core/intentRouterKeywordToolGuards.js.map +1 -1
  67. package/dist/core/intentRouterKeywordWeights.js +40 -1222
  68. package/dist/core/intentRouterKeywordWeights.js.map +1 -1
  69. package/dist/core/intentRouterOperationalKeywordWeights.d.ts +1 -0
  70. package/dist/core/intentRouterOperationalKeywordWeights.js +203 -0
  71. package/dist/core/intentRouterOperationalKeywordWeights.js.map +1 -0
  72. package/dist/core/intentRouterPlanningSignals.js +4 -1
  73. package/dist/core/intentRouterPlanningSignals.js.map +1 -1
  74. package/dist/core/intentRouterPrDiffKeywords.d.ts +4 -0
  75. package/dist/core/intentRouterPrDiffKeywords.js +64 -0
  76. package/dist/core/intentRouterPrDiffKeywords.js.map +1 -0
  77. package/dist/core/intentRouterPrDiffSignals.js +6 -0
  78. package/dist/core/intentRouterPrDiffSignals.js.map +1 -1
  79. package/dist/core/intentRouterProductImprovementSignals.d.ts +1 -0
  80. package/dist/core/intentRouterProductImprovementSignals.js +48 -0
  81. package/dist/core/intentRouterProductImprovementSignals.js.map +1 -0
  82. package/dist/core/intentRouterRegressionKeywordMatches.js +3 -0
  83. package/dist/core/intentRouterRegressionKeywordMatches.js.map +1 -1
  84. package/dist/core/intentRouterRegressionKeywordWeights.d.ts +1 -0
  85. package/dist/core/intentRouterRegressionKeywordWeights.js +118 -0
  86. package/dist/core/intentRouterRegressionKeywordWeights.js.map +1 -0
  87. package/dist/core/intentRouterReleaseSignals.d.ts +1 -0
  88. package/dist/core/intentRouterReleaseSignals.js +47 -0
  89. package/dist/core/intentRouterReleaseSignals.js.map +1 -1
  90. package/dist/core/intentRouterReviewSignals.d.ts +1 -0
  91. package/dist/core/intentRouterReviewSignals.js +23 -1
  92. package/dist/core/intentRouterReviewSignals.js.map +1 -1
  93. package/dist/core/intentRouterSearchKeywordWeights.d.ts +1 -0
  94. package/dist/core/intentRouterSearchKeywordWeights.js +407 -0
  95. package/dist/core/intentRouterSearchKeywordWeights.js.map +1 -0
  96. package/dist/core/intentRouterSecurityKeywordWeights.d.ts +1 -0
  97. package/dist/core/intentRouterSecurityKeywordWeights.js +50 -0
  98. package/dist/core/intentRouterSecurityKeywordWeights.js.map +1 -0
  99. package/dist/core/intentRouterTrustFeedbackKeywordWeights.d.ts +1 -0
  100. package/dist/core/intentRouterTrustFeedbackKeywordWeights.js +222 -0
  101. package/dist/core/intentRouterTrustFeedbackKeywordWeights.js.map +1 -0
  102. package/dist/core/intentRouterUnderstandSignals.js +1 -0
  103. package/dist/core/intentRouterUnderstandSignals.js.map +1 -1
  104. package/dist/core/intentRouterWorkSignals.js +3 -0
  105. package/dist/core/intentRouterWorkSignals.js.map +1 -1
  106. package/dist/core/intentRouterWorkflowKeywordWeights.d.ts +1 -0
  107. package/dist/core/intentRouterWorkflowKeywordWeights.js +124 -0
  108. package/dist/core/intentRouterWorkflowKeywordWeights.js.map +1 -0
  109. package/dist/core/issueEngine.js +46 -2
  110. package/dist/core/issueEngine.js.map +1 -1
  111. package/dist/core/memory.d.ts +2 -0
  112. package/dist/core/memory.js +33 -1
  113. package/dist/core/memory.js.map +1 -1
  114. package/dist/core/preflightChangedFiles.d.ts +3 -0
  115. package/dist/core/preflightChangedFiles.js +13 -0
  116. package/dist/core/preflightChangedFiles.js.map +1 -1
  117. package/dist/core/preflightEvidence.d.ts +3 -0
  118. package/dist/core/preflightEvidence.js +3 -0
  119. package/dist/core/preflightEvidence.js.map +1 -1
  120. package/dist/core/privacy.d.ts +2 -0
  121. package/dist/core/privacy.js +10 -0
  122. package/dist/core/privacy.js.map +1 -1
  123. package/dist/core/proofCards.d.ts +10 -0
  124. package/dist/core/proofCards.js +222 -0
  125. package/dist/core/proofCards.js.map +1 -0
  126. package/dist/core/qualityScorecard.js +25 -13
  127. package/dist/core/qualityScorecard.js.map +1 -1
  128. package/dist/core/riskDelta.d.ts +19 -0
  129. package/dist/core/riskDelta.js +77 -0
  130. package/dist/core/riskDelta.js.map +1 -0
  131. package/dist/core/simulate.d.ts +6 -0
  132. package/dist/core/simulate.js +298 -0
  133. package/dist/core/simulate.js.map +1 -0
  134. package/dist/core/startEvidence.js +26 -1
  135. package/dist/core/startEvidence.js.map +1 -1
  136. package/dist/core/startFixedRouteCriteria.js +5 -0
  137. package/dist/core/startFixedRouteCriteria.js.map +1 -1
  138. package/dist/core/startInputs.d.ts +3 -0
  139. package/dist/core/startMissionPolicy.d.ts +1 -1
  140. package/dist/core/startMissionPolicy.js +18 -7
  141. package/dist/core/startMissionPolicy.js.map +1 -1
  142. package/dist/core/startMode.js +17 -4
  143. package/dist/core/startMode.js.map +1 -1
  144. package/dist/core/startReportBuilder.js +1 -1
  145. package/dist/core/startReportBuilder.js.map +1 -1
  146. package/dist/core/startReviewGate.js +26 -4
  147. package/dist/core/startReviewGate.js.map +1 -1
  148. package/dist/core/startRouteActions.js +6 -0
  149. package/dist/core/startRouteActions.js.map +1 -1
  150. package/dist/core/understand.js +60 -13
  151. package/dist/core/understand.js.map +1 -1
  152. package/dist/core/workplan.js +99 -17
  153. package/dist/core/workplan.js.map +1 -1
  154. package/dist/mcp/toolCatalog.js +4 -0
  155. package/dist/mcp/toolCatalog.js.map +1 -1
  156. package/dist/mcp/tools/assess.d.ts +2 -0
  157. package/dist/mcp/tools/assess.js +42 -0
  158. package/dist/mcp/tools/assess.js.map +1 -0
  159. package/dist/mcp/tools/simulate.d.ts +2 -0
  160. package/dist/mcp/tools/simulate.js +32 -0
  161. package/dist/mcp/tools/simulate.js.map +1 -0
  162. package/dist/projscan-sbom.cdx.json +6 -6
  163. package/dist/publicCore.d.ts +2 -0
  164. package/dist/publicCore.js +2 -0
  165. package/dist/publicCore.js.map +1 -1
  166. package/dist/reporters/ciIssueDetails.d.ts +10 -0
  167. package/dist/reporters/ciIssueDetails.js +37 -0
  168. package/dist/reporters/ciIssueDetails.js.map +1 -0
  169. package/dist/reporters/consoleCiReporter.d.ts +2 -1
  170. package/dist/reporters/consoleCiReporter.js +26 -9
  171. package/dist/reporters/consoleCiReporter.js.map +1 -1
  172. package/dist/reporters/consoleFileReporter.js +10 -0
  173. package/dist/reporters/consoleFileReporter.js.map +1 -1
  174. package/dist/reporters/consoleHealthReporter.js +3 -1
  175. package/dist/reporters/consoleHealthReporter.js.map +1 -1
  176. package/dist/reporters/jsonReporter.d.ts +2 -1
  177. package/dist/reporters/jsonReporter.js +17 -10
  178. package/dist/reporters/jsonReporter.js.map +1 -1
  179. package/dist/reporters/markdownFileReporter.js +11 -0
  180. package/dist/reporters/markdownFileReporter.js.map +1 -1
  181. package/dist/reporters/markdownHealthReporter.d.ts +2 -1
  182. package/dist/reporters/markdownHealthReporter.js +5 -5
  183. package/dist/reporters/markdownHealthReporter.js.map +1 -1
  184. package/dist/reporters/scoreBreakdownReporter.d.ts +2 -0
  185. package/dist/reporters/scoreBreakdownReporter.js +24 -0
  186. package/dist/reporters/scoreBreakdownReporter.js.map +1 -0
  187. package/dist/tool-manifest.json +52 -3
  188. package/dist/types/analysis.d.ts +21 -1
  189. package/dist/types/assess.d.ts +91 -0
  190. package/dist/types/assess.js +2 -0
  191. package/dist/types/assess.js.map +1 -0
  192. package/dist/types/bugHunt.d.ts +3 -0
  193. package/dist/types/config.d.ts +9 -0
  194. package/dist/types/dogfood.d.ts +15 -1
  195. package/dist/types/inspection.d.ts +3 -0
  196. package/dist/types/preflight.d.ts +3 -0
  197. package/dist/types/simulate.d.ts +41 -0
  198. package/dist/types/simulate.js +2 -0
  199. package/dist/types/simulate.js.map +1 -0
  200. package/dist/types/startMissionControl.d.ts +3 -0
  201. package/dist/types/startMissionReview.d.ts +2 -0
  202. package/dist/types/workplan.d.ts +1 -0
  203. package/dist/types.d.ts +2 -0
  204. package/dist/utils/ciFailOn.d.ts +5 -0
  205. package/dist/utils/ciFailOn.js +12 -0
  206. package/dist/utils/ciFailOn.js.map +1 -0
  207. package/dist/utils/config.js +3 -1
  208. package/dist/utils/config.js.map +1 -1
  209. package/dist/utils/configBasics.d.ts +2 -0
  210. package/dist/utils/configBasics.js +21 -0
  211. package/dist/utils/configBasics.js.map +1 -1
  212. package/dist/utils/configIssueRules.js +64 -0
  213. package/dist/utils/configIssueRules.js.map +1 -1
  214. package/dist/utils/formatSupport.d.ts +2 -0
  215. package/dist/utils/formatSupport.js +2 -0
  216. package/dist/utils/formatSupport.js.map +1 -1
  217. package/dist/utils/scoreCalculator.js +77 -16
  218. package/dist/utils/scoreCalculator.js.map +1 -1
  219. package/docs/GUIDE.md +55 -7
  220. package/package.json +1 -1
@@ -0,0 +1,77 @@
1
+ export function computeRiskDelta(input) {
2
+ const basis = [`health score ${clamp(input.healthScore)}`];
3
+ const qualityPenalty = qualityVerdictPenalty(input.qualityVerdict);
4
+ const preflightPenalty = preflightVerdictPenalty(input.preflightVerdict);
5
+ const cardPenalty = input.proofCards.reduce((sum, card) => sum + priorityPenalty(card.priority), 0);
6
+ if (qualityPenalty > 0)
7
+ basis.push(`quality verdict ${input.qualityVerdict} penalty ${qualityPenalty}`);
8
+ if (preflightPenalty > 0)
9
+ basis.push(`preflight verdict ${input.preflightVerdict} penalty ${preflightPenalty}`);
10
+ if (cardPenalty > 0)
11
+ basis.push(`${input.proofCards.length} proof card risk penalty ${cardPenalty}`);
12
+ const baselineScore = clamp(input.healthScore - qualityPenalty - preflightPenalty - cardPenalty);
13
+ const selected = new Set(input.selectedCardIds ?? []);
14
+ const selectedCards = input.proofCards.filter((card) => selected.has(card.id));
15
+ const improvement = selectedCards.reduce((sum, card) => sum + expectedImprovement(card.priority), 0);
16
+ for (const card of selectedCards) {
17
+ basis.push(`${card.priority} ${card.source} improvement ${expectedImprovement(card.priority)}`);
18
+ }
19
+ const projectedScore = clamp(baselineScore + improvement);
20
+ return {
21
+ baselineScore,
22
+ projectedScore,
23
+ delta: projectedScore - baselineScore,
24
+ basis,
25
+ };
26
+ }
27
+ export function compareRiskDeltaSnapshots(input) {
28
+ const previousScore = clamp(input.previous.riskDelta.projectedScore);
29
+ const currentScore = clamp(input.current.riskDelta.projectedScore);
30
+ const delta = currentScore - previousScore;
31
+ const suffix = input.baselinePath ? ` since ${input.baselinePath}` : '';
32
+ const direction = delta > 0 ? 'improved' : delta < 0 ? 'declined' : 'is unchanged';
33
+ const amount = delta === 0 ? '' : ` by ${Math.abs(delta)}`;
34
+ return {
35
+ previousScore,
36
+ currentScore,
37
+ delta,
38
+ ...(input.baselinePath ? { baselinePath: input.baselinePath } : {}),
39
+ summary: `risk score ${direction}${amount}${suffix}`,
40
+ };
41
+ }
42
+ function qualityVerdictPenalty(verdict) {
43
+ if (verdict === 'blocked')
44
+ return 30;
45
+ if (verdict === 'needs_attention')
46
+ return 15;
47
+ if (verdict === 'healthy')
48
+ return 4;
49
+ return 0;
50
+ }
51
+ function preflightVerdictPenalty(verdict) {
52
+ if (verdict === 'block')
53
+ return 30;
54
+ if (verdict === 'caution')
55
+ return 12;
56
+ return 0;
57
+ }
58
+ function priorityPenalty(priority) {
59
+ if (priority === 'p0')
60
+ return 12;
61
+ if (priority === 'p1')
62
+ return 8;
63
+ return 3;
64
+ }
65
+ function expectedImprovement(priority) {
66
+ if (priority === 'p0')
67
+ return 18;
68
+ if (priority === 'p1')
69
+ return 12;
70
+ return 5;
71
+ }
72
+ function clamp(value) {
73
+ if (!Number.isFinite(value))
74
+ return 0;
75
+ return Math.max(0, Math.min(100, Math.round(value)));
76
+ }
77
+ //# sourceMappingURL=riskDelta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"riskDelta.js","sourceRoot":"","sources":["../../src/core/riskDelta.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { SimulateReport } from '../types/simulate.js';
2
+ export interface ComputeSimulationOptions {
3
+ plan: string;
4
+ maxFiles?: number;
5
+ }
6
+ export declare function computeSimulation(rootPath: string, options: ComputeSimulationOptions): Promise<SimulateReport>;
@@ -0,0 +1,298 @@
1
+ import path from 'node:path';
2
+ import { buildCodeGraph } from './codeGraph.js';
3
+ import { computeQualityScorecard } from './qualityScorecard.js';
4
+ import { scanRepository } from './repositoryScanner.js';
5
+ import { computeRiskDelta } from './riskDelta.js';
6
+ const DEFAULT_MAX_FILES = 5;
7
+ const NO_MATCH_WARNING = 'No repo files matched the plan. Mention a file, symbol, command, package, or module name for a stronger simulation.';
8
+ export async function computeSimulation(rootPath, options) {
9
+ const plan = normalizePlan(options.plan);
10
+ if (!plan)
11
+ throw new Error('simulate requires a non-empty plan');
12
+ const maxFiles = normalizeMaxFiles(options.maxFiles);
13
+ const [scan, quality] = await Promise.all([
14
+ scanRepository(rootPath),
15
+ computeQualityScorecard(rootPath, { maxRisks: maxFiles }),
16
+ ]);
17
+ const graph = await buildCodeGraph(rootPath, scan.files).catch(() => undefined);
18
+ const candidateFiles = rankCandidateFiles({
19
+ plan,
20
+ files: scan.files,
21
+ graph,
22
+ risks: quality.topRisks,
23
+ }).slice(0, maxFiles);
24
+ const testsLikelyAffected = likelyTests(scan.files, candidateFiles);
25
+ const contractsLikelyAffected = inferContracts(plan, candidateFiles);
26
+ const warnings = candidateFiles.length === 0 ? [NO_MATCH_WARNING] : [];
27
+ const proofCards = candidateFiles.map((candidate) => ({
28
+ id: `simulate-${slug(candidate.path)}`,
29
+ priority: priorityForCandidate(candidate),
30
+ source: candidate.qualityRisk ? 'hotspot' : 'plan',
31
+ }));
32
+ const riskDelta = computeRiskDelta({
33
+ healthScore: quality.health.score,
34
+ qualityVerdict: quality.verdict,
35
+ preflightVerdict: 'proceed',
36
+ proofCards,
37
+ selectedCardIds: proofCards.slice(0, 2).map((card) => card.id),
38
+ });
39
+ const confidence = confidenceFor(candidateFiles, graph);
40
+ const verdict = verdictFor(confidence, riskDelta.delta);
41
+ const rolloutPlan = buildRolloutPlan(plan, candidateFiles, testsLikelyAffected);
42
+ const proofCommands = buildProofCommands(plan, candidateFiles, testsLikelyAffected);
43
+ const evidence = buildEvidence(candidateFiles, testsLikelyAffected, contractsLikelyAffected);
44
+ return {
45
+ schemaVersion: 1,
46
+ plan,
47
+ verdict,
48
+ confidence,
49
+ summary: summarize(verdict, confidence, candidateFiles, riskDelta.delta),
50
+ filesLikelyTouched: candidateFiles,
51
+ testsLikelyAffected,
52
+ contractsLikelyAffected,
53
+ riskDelta,
54
+ rolloutPlan,
55
+ proofCommands,
56
+ evidence,
57
+ warnings,
58
+ };
59
+ }
60
+ function rankCandidateFiles(input) {
61
+ const planLower = input.plan.toLowerCase();
62
+ const planTerms = tokenize(input.plan);
63
+ const riskByFile = new Map();
64
+ for (const risk of input.risks) {
65
+ for (const file of risk.files)
66
+ riskByFile.set(file, risk);
67
+ }
68
+ return input.files
69
+ .map((file) => scoreFile(file, planLower, planTerms, input.graph, riskByFile.get(file.relativePath)))
70
+ .filter((candidate) => candidate.score > 0)
71
+ .sort((a, b) => b.score - a.score ||
72
+ testRank(a.path) - testRank(b.path) ||
73
+ a.path.localeCompare(b.path));
74
+ }
75
+ function scoreFile(file, planLower, planTerms, graph, qualityRisk) {
76
+ const basename = path.basename(file.relativePath);
77
+ const basenameNoExt = basename.replace(/\.[^.]+$/, '');
78
+ const fileTerms = tokenize(`${file.relativePath} ${basenameNoExt}`);
79
+ const reasons = [];
80
+ let score = 0;
81
+ if (planLower.includes(file.relativePath.toLowerCase())) {
82
+ score += 80;
83
+ reasons.push(`plan mentions ${file.relativePath}`);
84
+ }
85
+ else if (planLower.includes(basename.toLowerCase())) {
86
+ score += 70;
87
+ reasons.push(`plan mentions ${basename}`);
88
+ }
89
+ else if (basenameNoExt && planLower.includes(basenameNoExt.toLowerCase())) {
90
+ score += 60;
91
+ reasons.push(`plan mentions ${basenameNoExt}`);
92
+ }
93
+ const overlap = [...fileTerms].filter((term) => planTerms.has(term) && term.length > 2);
94
+ if (overlap.length > 0) {
95
+ score += overlap.length * 12;
96
+ reasons.push(`plan shares term(s): ${overlap.slice(0, 4).join(', ')}`);
97
+ }
98
+ if (qualityRisk && score > 0) {
99
+ score += 8;
100
+ reasons.push(`quality signal: ${qualityRisk.title}`);
101
+ }
102
+ const gf = graph?.files.get(file.relativePath);
103
+ const fanIn = graph?.localImporters.get(file.relativePath)?.size ?? 0;
104
+ const fanOut = gf?.imports.length ?? 0;
105
+ if (score > 0 && gf && (fanIn > 0 || fanOut > 0))
106
+ score += Math.min(10, fanIn + fanOut);
107
+ const graphSummary = gf && graph ? graphFor(file.relativePath, gf, graph) : undefined;
108
+ return {
109
+ path: file.relativePath,
110
+ score,
111
+ reasons,
112
+ ...(graphSummary ? { graph: graphSummary } : {}),
113
+ ...(qualityRisk ? { qualityRisk: qualityRisk.title } : {}),
114
+ };
115
+ }
116
+ function graphFor(file, graphFile, graph) {
117
+ return {
118
+ fanIn: graph.localImporters.get(file)?.size ?? 0,
119
+ fanOut: graphFile.imports.length,
120
+ directImporters: [...(graph.localImporters.get(file) ?? new Set())].sort(),
121
+ };
122
+ }
123
+ function likelyTests(files, candidates) {
124
+ const testFiles = files
125
+ .map((file) => file.relativePath)
126
+ .filter((file) => /(?:^|[./_-])(test|spec)\.[^.]+$/.test(file) || /\.(test|spec)\.[^.]+$/.test(file))
127
+ .sort();
128
+ const matches = new Map();
129
+ for (const candidate of candidates) {
130
+ const candidateBase = path.basename(candidate.path).replace(/\.[^.]+$/, '').toLowerCase();
131
+ for (const test of testFiles) {
132
+ const testLower = test.toLowerCase();
133
+ const score = testScore(testLower, candidateBase);
134
+ if (score > 0)
135
+ matches.set(test, Math.max(matches.get(test) ?? 0, score));
136
+ }
137
+ }
138
+ return [...matches]
139
+ .sort((a, b) => b[1] - a[1] || a[0].localeCompare(b[0]))
140
+ .map(([test]) => test);
141
+ }
142
+ function testScore(testLower, candidateBase) {
143
+ const testBase = path
144
+ .basename(testLower)
145
+ .replace(/\.(test|spec)\.[^.]+$/, '')
146
+ .replace(/\.[^.]+$/, '');
147
+ if (testBase === candidateBase)
148
+ return 100;
149
+ return testLower.includes(candidateBase) ? 40 : 0;
150
+ }
151
+ function inferContracts(plan, candidates) {
152
+ const terms = tokenize(plan);
153
+ const contracts = new Set();
154
+ if (hasAny(terms, ['split', 'extract', 'module', 'modules', 'boundary']))
155
+ contracts.add('module boundary');
156
+ if (hasAny(terms, ['cli', 'command', 'commands']))
157
+ contracts.add('CLI command surface');
158
+ if (hasAny(terms, ['mcp', 'tool', 'tools']))
159
+ contracts.add('MCP tool surface');
160
+ if (hasAny(terms, ['type', 'types', 'api', 'export', 'public']))
161
+ contracts.add('public API/types');
162
+ if (candidates.some((candidate) => candidate.path.startsWith('src/cli/')))
163
+ contracts.add('CLI command surface');
164
+ if (candidates.some((candidate) => candidate.path.startsWith('src/mcp/')))
165
+ contracts.add('MCP tool surface');
166
+ if (candidates.some((candidate) => candidate.path.includes('/types') || candidate.path === 'src/types.ts'))
167
+ contracts.add('public API/types');
168
+ return [...contracts].sort();
169
+ }
170
+ function buildRolloutPlan(plan, candidates, tests) {
171
+ const primary = candidates[0]?.path;
172
+ const firstTest = tests[0];
173
+ return [
174
+ {
175
+ title: 'Lock the current behavior',
176
+ detail: firstTest
177
+ ? `Run or add the closest regression test before moving code: ${firstTest}.`
178
+ : 'Add one regression test around the behavior named in the plan before moving code.',
179
+ commands: firstTest ? [`npm test -- ${firstTest}`] : ['projscan assess --mode fix-first --format json'],
180
+ },
181
+ {
182
+ title: 'Extract the smallest module boundary',
183
+ detail: primary
184
+ ? `Move one responsibility out of ${primary}; keep imports and public exports stable until tests pass.`
185
+ : 'Name the target file or symbol, then extract one responsibility without broad cleanup.',
186
+ commands: primary ? [`projscan file ${primary} --format json`] : ['projscan understand --intent "where should this change go?" --format json'],
187
+ },
188
+ {
189
+ title: 'Wire callers through the existing public surface',
190
+ detail: 'Update direct importers first and avoid renaming public contracts unless the simulation calls them out.',
191
+ commands: primary ? [`projscan impact ${primary} --format json`] : ['projscan quality-scorecard --format json'],
192
+ },
193
+ {
194
+ title: 'Run proof commands and compare risk',
195
+ detail: `After the change, rerun the simulator for the same plan and compare risk delta.`,
196
+ commands: [`projscan simulate --plan ${quotePlan(plan)} --format json`],
197
+ },
198
+ ];
199
+ }
200
+ function buildProofCommands(plan, candidates, tests) {
201
+ const commands = [
202
+ `projscan simulate --plan ${quotePlan(plan)} --format json`,
203
+ 'projscan assess --mode fix-first --format json',
204
+ 'projscan quality-scorecard --format json',
205
+ ];
206
+ for (const candidate of candidates.slice(0, 3)) {
207
+ commands.push(`projscan file ${candidate.path} --format json`);
208
+ commands.push(`projscan impact ${candidate.path} --format json`);
209
+ }
210
+ for (const test of tests.slice(0, 3))
211
+ commands.push(`npm test -- ${test}`);
212
+ return [...new Set(commands)];
213
+ }
214
+ function buildEvidence(candidates, tests, contracts) {
215
+ const evidence = [];
216
+ for (const candidate of candidates) {
217
+ evidence.push({
218
+ source: 'plan-match',
219
+ detail: candidate.reasons.join('; '),
220
+ file: candidate.path,
221
+ command: `projscan file ${candidate.path} --format json`,
222
+ });
223
+ if (candidate.graph) {
224
+ evidence.push({
225
+ source: 'code-graph',
226
+ detail: `fan-in ${candidate.graph.fanIn}, fan-out ${candidate.graph.fanOut}, direct importers ${candidate.graph.directImporters.length}`,
227
+ file: candidate.path,
228
+ command: `projscan impact ${candidate.path} --format json`,
229
+ });
230
+ }
231
+ }
232
+ if (tests.length > 0) {
233
+ evidence.push({
234
+ source: 'test-neighbor',
235
+ detail: `${tests.length} likely affected test file(s)`,
236
+ file: tests[0],
237
+ });
238
+ }
239
+ if (contracts.length > 0) {
240
+ evidence.push({
241
+ source: 'contract-inference',
242
+ detail: contracts.join(', '),
243
+ });
244
+ }
245
+ return evidence;
246
+ }
247
+ function verdictFor(confidence, delta) {
248
+ if (confidence === 'low')
249
+ return 'needs-more-evidence';
250
+ if (delta <= 0)
251
+ return 'not-worth-it-yet';
252
+ return 'worth-doing';
253
+ }
254
+ function confidenceFor(candidates, graph) {
255
+ if (candidates.length === 0)
256
+ return 'low';
257
+ if (candidates[0] && candidates[0].score >= 80 && graph)
258
+ return 'high';
259
+ return 'medium';
260
+ }
261
+ function summarize(verdict, confidence, candidates, delta) {
262
+ if (candidates.length === 0)
263
+ return `${verdict}: low-confidence simulation needs a concrete target`;
264
+ return `${verdict}: ${confidence}-confidence plan touches ${candidates.length} likely file(s), projected risk delta +${delta}`;
265
+ }
266
+ function priorityForCandidate(candidate) {
267
+ if (candidate.score >= 90)
268
+ return 'p0';
269
+ if (candidate.score >= 45)
270
+ return 'p1';
271
+ return 'p2';
272
+ }
273
+ function normalizePlan(value) {
274
+ return value?.trim().replace(/\s+/g, ' ') ?? '';
275
+ }
276
+ function normalizeMaxFiles(value) {
277
+ if (typeof value !== 'number' || !Number.isFinite(value))
278
+ return DEFAULT_MAX_FILES;
279
+ return Math.max(1, Math.min(25, Math.floor(value)));
280
+ }
281
+ function tokenize(value) {
282
+ const spaced = value.replace(/([a-z0-9])([A-Z])/g, '$1 $2').toLowerCase();
283
+ const terms = spaced.match(/[a-z0-9]+/g) ?? [];
284
+ return new Set(terms.filter((term) => term.length > 1));
285
+ }
286
+ function hasAny(terms, values) {
287
+ return values.some((value) => terms.has(value));
288
+ }
289
+ function quotePlan(plan) {
290
+ return `"${plan.replace(/["\\]/g, '\\$&')}"`;
291
+ }
292
+ function slug(value) {
293
+ return value.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-|-$/g, '');
294
+ }
295
+ function testRank(file) {
296
+ return /\.(test|spec)\.[^.]+$/.test(file) ? 1 : 0;
297
+ }
298
+ //# sourceMappingURL=simulate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simulate.js","sourceRoot":"","sources":["../../src/core/simulate.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,8 @@ export function buildStartCoordinationHints(riskSources, mode, harnessHints = []
8
8
  {
9
9
  id: 'current-worktree-check',
10
10
  label: 'Separate current worktree evidence from session memory',
11
- message: `Current worktree evidence sees ${riskSources.currentWorktree.count} changed file(s); remembered session context may include older agent touches.`,
11
+ message: currentWorktreeHint(riskSources.currentWorktree) +
12
+ ' Remembered session context may include older agent touches.',
12
13
  command: `projscan preflight --mode ${preflightMode} --format json`,
13
14
  },
14
15
  ];
@@ -26,6 +27,22 @@ export function buildStartCoordinationHints(riskSources, mode, harnessHints = []
26
27
  }
27
28
  return hints;
28
29
  }
30
+ function currentWorktreeHint(currentWorktree) {
31
+ if (!currentWorktree.available) {
32
+ return 'Current worktree evidence is unavailable.';
33
+ }
34
+ const uncommittedCount = currentWorktree.uncommittedChangedFileCount ?? currentWorktree.count;
35
+ const branchCount = currentWorktree.branchChangedFileCount ??
36
+ Math.max(0, currentWorktree.count - uncommittedCount);
37
+ const baseSuffix = currentWorktree.baseRef ? ` against ${currentWorktree.baseRef}` : '';
38
+ if (uncommittedCount === 0) {
39
+ return `Working tree has no uncommitted changes; branch diff evidence sees ${branchCount} file(s)${baseSuffix}.`;
40
+ }
41
+ if (branchCount === 0) {
42
+ return `Working tree has ${uncommittedCount} uncommitted changed file(s).`;
43
+ }
44
+ return `Working tree has ${uncommittedCount} uncommitted changed file(s); branch diff evidence sees ${branchCount} committed file(s)${baseSuffix}.`;
45
+ }
29
46
  function swarmCoordinationHintForIntent(intent) {
30
47
  const primaryRoute = routesForIntent(intent)[0];
31
48
  if (primaryRoute?.tool !== 'projscan_coordinate')
@@ -44,6 +61,7 @@ export async function buildStartRiskSources(rootPath) {
44
61
  reason: err instanceof Error ? err.message : String(err),
45
62
  baseRef: null,
46
63
  files: [],
64
+ uncommittedFiles: [],
47
65
  })),
48
66
  loadSession(rootPath).catch(() => null),
49
67
  ]);
@@ -63,6 +81,9 @@ export async function buildStartRiskSources(rootPath) {
63
81
  count: changed.files.length,
64
82
  files: changed.files.slice(0, 40),
65
83
  baseRef: changed.baseRef,
84
+ branchChangedFileCount: branchChangedFileCount(changed.files, changed.uncommittedFiles),
85
+ uncommittedChangedFileCount: changed.uncommittedFiles.length,
86
+ uncommittedFiles: changed.uncommittedFiles.slice(0, 40),
66
87
  ...(changed.reason ? { reason: changed.reason } : {}),
67
88
  },
68
89
  sessionMemory: {
@@ -74,4 +95,8 @@ export async function buildStartRiskSources(rootPath) {
74
95
  },
75
96
  };
76
97
  }
98
+ function branchChangedFileCount(files, uncommittedFiles) {
99
+ const uncommitted = new Set(uncommittedFiles);
100
+ return files.filter((file) => !uncommitted.has(file)).length;
101
+ }
77
102
  //# sourceMappingURL=startEvidence.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"startEvidence.js","sourceRoot":"","sources":["../../src/core/startEvidence.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"startEvidence.js","sourceRoot":"","sources":["../../src/core/startEvidence.ts"],"names":[],"mappings":"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"}
@@ -39,6 +39,11 @@ export const FIXED_ROUTE_CRITERIA = {
39
39
  'The evidence pack produces a paste-ready PR comment with verdict, top risks, owner routing, and next commands.',
40
40
  'The reviewer-facing comment is validated before it is shared or used for approval.',
41
41
  ],
42
+ projscan_feedback_intake: [
43
+ 'The raw feedback is classified and preserved before any product change starts.',
44
+ 'The generated AgentLoop task command is copied or run so the feedback becomes a bounded implementation slice.',
45
+ 'The feedback-intake suggested verification command is attached to the task or handoff.',
46
+ ],
42
47
  projscan_analyze: [
43
48
  'The scoped analysis, health, and CI artifacts are generated with path redaction enabled before sharing outside the repo.',
44
49
  'The reviewer can correlate redacted-path-N labels without seeing raw repo structure.',
@@ -1 +1 @@
1
- {"version":3,"file":"startFixedRouteCriteria.js","sourceRoot":"","sources":["../../src/core/startFixedRouteCriteria.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAA6B;IAC5D,sBAAsB,EAAE;QACtB,mFAAmF;QACnF,0FAA0F;KAC3F;IACD,iBAAiB,EAAE;QACjB,gFAAgF;QAChF,6EAA6E;KAC9E;IACD,iBAAiB,EAAE;QACjB,0FAA0F;QAC1F,wEAAwE;KACzE;IACD,oBAAoB,EAAE;QACpB,sHAAsH;QACtH,4GAA4G;KAC7G;IACD,gBAAgB,EAAE;QAChB,uFAAuF;QACvF,yHAAyH;KAC1H;IACD,mBAAmB,EAAE;QACnB,0GAA0G;QAC1G,4HAA4H;KAC7H;IACD,sBAAsB,EAAE;QACtB,mKAAmK;QACnK,4GAA4G;KAC7G;IACD,0BAA0B,EAAE;QAC1B,sGAAsG;QACtG,8GAA8G;KAC/G;IACD,eAAe,EAAE;QACf,gGAAgG;QAChG,mGAAmG;KACpG;IACD,sBAAsB,EAAE;QACtB,gHAAgH;QAChH,oFAAoF;KACrF;IACD,gBAAgB,EAAE;QAChB,0HAA0H;QAC1H,sFAAsF;KACvF;IACD,eAAe,EAAE;QACf,8GAA8G;QAC9G,6GAA6G;KAC9G;IACD,oBAAoB,EAAE;QACpB,kEAAkE;QAClE,8FAA8F;KAC/F;IACD,sBAAsB,EAAE;QACtB,iEAAiE;QACjE,4HAA4H;KAC7H;IACD,gBAAgB,EAAE;QAChB,wHAAwH;QACxH,wEAAwE;KACzE;IACD,iBAAiB,EAAE;QACjB,uEAAuE;QACvE,0FAA0F;KAC3F;IACD,gBAAgB,EAAE;QAChB,sGAAsG;QACtG,kEAAkE;KACnE;IACD,cAAc,EAAE;QACd,8FAA8F;QAC9F,4GAA4G;KAC7G;IACD,mBAAmB,EAAE;QACnB,yGAAyG;QACzG,8HAA8H;KAC/H;IACD,iBAAiB,EAAE;QACjB,yFAAyF;QACzF,2HAA2H;KAC5H;IACD,uBAAuB,EAAE;QACvB,sGAAsG;QACtG,4EAA4E;KAC7E;IACD,eAAe,EAAE;QACf,qGAAqG;KACtG;CACF,CAAC"}
1
+ {"version":3,"file":"startFixedRouteCriteria.js","sourceRoot":"","sources":["../../src/core/startFixedRouteCriteria.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAA6B;IAC5D,sBAAsB,EAAE;QACtB,mFAAmF;QACnF,0FAA0F;KAC3F;IACD,iBAAiB,EAAE;QACjB,gFAAgF;QAChF,6EAA6E;KAC9E;IACD,iBAAiB,EAAE;QACjB,0FAA0F;QAC1F,wEAAwE;KACzE;IACD,oBAAoB,EAAE;QACpB,sHAAsH;QACtH,4GAA4G;KAC7G;IACD,gBAAgB,EAAE;QAChB,uFAAuF;QACvF,yHAAyH;KAC1H;IACD,mBAAmB,EAAE;QACnB,0GAA0G;QAC1G,4HAA4H;KAC7H;IACD,sBAAsB,EAAE;QACtB,mKAAmK;QACnK,4GAA4G;KAC7G;IACD,0BAA0B,EAAE;QAC1B,sGAAsG;QACtG,8GAA8G;KAC/G;IACD,eAAe,EAAE;QACf,gGAAgG;QAChG,mGAAmG;KACpG;IACD,sBAAsB,EAAE;QACtB,gHAAgH;QAChH,oFAAoF;KACrF;IACD,wBAAwB,EAAE;QACxB,gFAAgF;QAChF,+GAA+G;QAC/G,wFAAwF;KACzF;IACD,gBAAgB,EAAE;QAChB,0HAA0H;QAC1H,sFAAsF;KACvF;IACD,eAAe,EAAE;QACf,8GAA8G;QAC9G,6GAA6G;KAC9G;IACD,oBAAoB,EAAE;QACpB,kEAAkE;QAClE,8FAA8F;KAC/F;IACD,sBAAsB,EAAE;QACtB,iEAAiE;QACjE,4HAA4H;KAC7H;IACD,gBAAgB,EAAE;QAChB,wHAAwH;QACxH,wEAAwE;KACzE;IACD,iBAAiB,EAAE;QACjB,uEAAuE;QACvE,0FAA0F;KAC3F;IACD,gBAAgB,EAAE;QAChB,sGAAsG;QACtG,kEAAkE;KACnE;IACD,cAAc,EAAE;QACd,8FAA8F;QAC9F,4GAA4G;KAC7G;IACD,mBAAmB,EAAE;QACnB,yGAAyG;QACzG,8HAA8H;KAC/H;IACD,iBAAiB,EAAE;QACjB,yFAAyF;QACzF,2HAA2H;KAC5H;IACD,uBAAuB,EAAE;QACvB,sGAAsG;QACtG,4EAA4E;KAC7E;IACD,eAAe,EAAE;QACf,qGAAqG;KACtG;CACF,CAAC"}
@@ -16,6 +16,9 @@ export declare function loadStartInputs(rootPath: string, options: ComputeStartO
16
16
  count: number;
17
17
  files: string[];
18
18
  baseRef: string | null;
19
+ branchChangedFileCount?: number;
20
+ uncommittedChangedFileCount?: number;
21
+ uncommittedFiles?: string[];
19
22
  reason?: string;
20
23
  };
21
24
  sessionMemory: {
@@ -16,4 +16,4 @@ export declare function missionProofCommands(mode: WorkplanMode, workplan: Workp
16
16
  export declare function chooseWorkflow(mode: WorkplanMode, recipes: AgentWorkflowRecipe[]): StartWorkflowRecommendation;
17
17
  export declare function combineRisks(workplan: WorkplanReport, qualityRisks: QualityScorecardRisk[], maxRisks: number): StartRisk[];
18
18
  export declare function dedupeActions(actions: PreflightSuggestedAction[]): PreflightSuggestedAction[];
19
- export declare function summarize(mode: WorkplanMode, workplan: WorkplanReport, qualityRisks: number, adoptionGaps: number, fixFirstTitle?: string, qualityVerdict?: QualityScorecardVerdict): string;
19
+ export declare function summarize(mode: WorkplanMode, workplan: WorkplanReport, qualityRisks: number, adoptionGaps: number, fixFirstTitle?: string, qualityVerdict?: QualityScorecardVerdict, topRisks?: StartRisk[]): string;
@@ -3,6 +3,7 @@ import { isPlaceholder } from './startIntentTargets.js';
3
3
  import { actionPlanFromRoute } from './startRouteActions.js';
4
4
  import { isReadyAction } from './startExecutionPlan.js';
5
5
  import { isRunnableCommand, uniqueStrings } from './startResume.js';
6
+ import { escapeDoubleQuoted } from './startShellArgs.js';
6
7
  import { actionFromWorkplan, isPreflightAction, preflightModeForMission, } from './startSuccessCriteria.js';
7
8
  export function routedWhyNow(route, actionPlan) {
8
9
  if (route.tool === 'projscan_impact' && actionPlan[0]?.tool === 'projscan_search') {
@@ -239,11 +240,16 @@ function workplanRiskToStartRisk(risk, index) {
239
240
  title: startRiskTitle(risk),
240
241
  source: risk.source,
241
242
  files: risk.file ? [risk.file] : [],
242
- command: risk.tool === 'projscan_review'
243
- ? 'projscan review --format json'
244
- : 'projscan preflight --format json',
243
+ command: workplanRiskCommand(risk),
245
244
  };
246
245
  }
246
+ function workplanRiskCommand(risk) {
247
+ if (risk.tool === 'projscan_review')
248
+ return 'projscan review --format json';
249
+ if (risk.tool === 'projscan_file' && risk.file)
250
+ return `projscan file "${escapeDoubleQuoted(risk.file)}" --format json`;
251
+ return 'projscan preflight --format json';
252
+ }
247
253
  function startRiskTitle(risk) {
248
254
  if (risk.source !== 'release')
249
255
  return risk.message;
@@ -305,10 +311,15 @@ export function dedupeActions(actions) {
305
311
  }
306
312
  return result.slice(0, 12);
307
313
  }
308
- export function summarize(mode, workplan, qualityRisks, adoptionGaps, fixFirstTitle, qualityVerdict) {
309
- const qualityLabel = qualityVerdict === 'excellent' || qualityVerdict === 'healthy'
310
- ? 'quality watch item(s)'
311
- : 'quality risk(s)';
314
+ export function summarize(mode, workplan, qualityRisks, adoptionGaps, fixFirstTitle, qualityVerdict, topRisks = []) {
315
+ const qualityLabel = topRisks.some(isPriorityRisk)
316
+ ? 'ranked risk item(s)'
317
+ : qualityVerdict === 'excellent' || qualityVerdict === 'healthy'
318
+ ? 'quality watch item(s)'
319
+ : 'quality risk(s)';
312
320
  return `start: ${mode} recommends ${fixFirstTitle ?? workplan.tasks[0]?.title ?? 'preserving the baseline'} with ${qualityRisks} ${qualityLabel} and ${adoptionGaps} adoption gap(s)`;
313
321
  }
322
+ function isPriorityRisk(risk) {
323
+ return risk.priority === 'p0' || risk.priority === 'p1';
324
+ }
314
325
  //# sourceMappingURL=startMissionPolicy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"startMissionPolicy.js","sourceRoot":"","sources":["../../src/core/startMissionPolicy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"startMissionPolicy.js","sourceRoot":"","sources":["../../src/core/startMissionPolicy.ts"],"names":[],"mappings":"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"}