projscan 4.7.0 → 4.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (466) hide show
  1. package/README.md +104 -56
  2. package/dist/cli/commands/bugHunt.js +37 -8
  3. package/dist/cli/commands/bugHunt.js.map +1 -1
  4. package/dist/cli/commands/preflight.js +18 -2
  5. package/dist/cli/commands/preflight.js.map +1 -1
  6. package/dist/cli/commands/privacyCheck.js +5 -2
  7. package/dist/cli/commands/privacyCheck.js.map +1 -1
  8. package/dist/cli/commands/releaseTrain.js +9 -1
  9. package/dist/cli/commands/releaseTrain.js.map +1 -1
  10. package/dist/cli/commands/start.js +5 -28
  11. package/dist/cli/commands/start.js.map +1 -1
  12. package/dist/cli/commands/startAction.d.ts +2 -1
  13. package/dist/cli/commands/startAction.js +4 -4
  14. package/dist/cli/commands/startAction.js.map +1 -1
  15. package/dist/cli/commands/startConsole.d.ts +1 -0
  16. package/dist/cli/commands/startConsole.js +83 -7
  17. package/dist/cli/commands/startConsole.js.map +1 -1
  18. package/dist/cli/commands/startOptionsRegistration.d.ts +2 -0
  19. package/dist/cli/commands/startOptionsRegistration.js +29 -0
  20. package/dist/cli/commands/startOptionsRegistration.js.map +1 -0
  21. package/dist/core/adoption.js +13 -0
  22. package/dist/core/adoption.js.map +1 -1
  23. package/dist/core/ast.d.ts +2 -17
  24. package/dist/core/ast.js +4 -33
  25. package/dist/core/ast.js.map +1 -1
  26. package/dist/core/astResult.d.ts +20 -0
  27. package/dist/core/astResult.js +39 -0
  28. package/dist/core/astResult.js.map +1 -0
  29. package/dist/core/bugHunt.js +62 -22
  30. package/dist/core/bugHunt.js.map +1 -1
  31. package/dist/core/bugHuntPreflightFindings.js +5 -2
  32. package/dist/core/bugHuntPreflightFindings.js.map +1 -1
  33. package/dist/core/codeGraph.d.ts +1 -16
  34. package/dist/core/codeGraph.js +4 -89
  35. package/dist/core/codeGraph.js.map +1 -1
  36. package/dist/core/codeGraphAdapterContexts.d.ts +8 -0
  37. package/dist/core/codeGraphAdapterContexts.js +14 -0
  38. package/dist/core/codeGraphAdapterContexts.js.map +1 -0
  39. package/dist/core/codeGraphIncremental.d.ts +17 -0
  40. package/dist/core/codeGraphIncremental.js +64 -0
  41. package/dist/core/codeGraphIncremental.js.map +1 -0
  42. package/dist/core/collisionDetector.d.ts +1 -0
  43. package/dist/core/collisionDetector.js +3 -0
  44. package/dist/core/collisionDetector.js.map +1 -1
  45. package/dist/core/coordination.js +23 -5
  46. package/dist/core/coordination.js.map +1 -1
  47. package/dist/core/coordinationEvidence.d.ts +1 -0
  48. package/dist/core/coordinationEvidence.js.map +1 -1
  49. package/dist/core/frameworkAstroSources.d.ts +2 -0
  50. package/dist/core/frameworkAstroSources.js +71 -0
  51. package/dist/core/frameworkAstroSources.js.map +1 -0
  52. package/dist/core/frameworkExpressSources.js +6 -31
  53. package/dist/core/frameworkExpressSources.js.map +1 -1
  54. package/dist/core/frameworkFastifySources.js +5 -22
  55. package/dist/core/frameworkFastifySources.js.map +1 -1
  56. package/dist/core/frameworkHonoSources.js +5 -24
  57. package/dist/core/frameworkHonoSources.js.map +1 -1
  58. package/dist/core/frameworkKoaSources.js +5 -24
  59. package/dist/core/frameworkKoaSources.js.map +1 -1
  60. package/dist/core/frameworkSourceContext.d.ts +15 -0
  61. package/dist/core/frameworkSourceContext.js +2 -0
  62. package/dist/core/frameworkSourceContext.js.map +1 -0
  63. package/dist/core/frameworkSourceMatching.d.ts +6 -0
  64. package/dist/core/frameworkSourceMatching.js +29 -0
  65. package/dist/core/frameworkSourceMatching.js.map +1 -0
  66. package/dist/core/frameworkSourceResolvers.d.ts +2 -0
  67. package/dist/core/frameworkSourceResolvers.js +51 -0
  68. package/dist/core/frameworkSourceResolvers.js.map +1 -0
  69. package/dist/core/frameworkSources.d.ts +2 -14
  70. package/dist/core/frameworkSources.js +11 -38
  71. package/dist/core/frameworkSources.js.map +1 -1
  72. package/dist/core/frameworkSvelteKitSources.d.ts +2 -0
  73. package/dist/core/frameworkSvelteKitSources.js +118 -0
  74. package/dist/core/frameworkSvelteKitSources.js.map +1 -0
  75. package/dist/core/intentRouter.d.ts +1 -1
  76. package/dist/core/intentRouter.js +2 -8
  77. package/dist/core/intentRouter.js.map +1 -1
  78. package/dist/core/intentRouterCatalog.js +40 -3
  79. package/dist/core/intentRouterCatalog.js.map +1 -1
  80. package/dist/core/intentRouterDependencySignals.d.ts +1 -0
  81. package/dist/core/intentRouterDependencySignals.js +14 -0
  82. package/dist/core/intentRouterDependencySignals.js.map +1 -1
  83. package/dist/core/intentRouterKeywordEarlyGuards.js +24 -1
  84. package/dist/core/intentRouterKeywordEarlyGuards.js.map +1 -1
  85. package/dist/core/intentRouterKeywordToolGuards.js +5 -0
  86. package/dist/core/intentRouterKeywordToolGuards.js.map +1 -1
  87. package/dist/core/intentRouterKeywordWeights.js +29 -0
  88. package/dist/core/intentRouterKeywordWeights.js.map +1 -1
  89. package/dist/core/intentRouterPreflightSignals.js +7 -2
  90. package/dist/core/intentRouterPreflightSignals.js.map +1 -1
  91. package/dist/core/intentRouterRegressionKeywordMatches.js +9 -2
  92. package/dist/core/intentRouterRegressionKeywordMatches.js.map +1 -1
  93. package/dist/core/intentRouterRegressionSignals.d.ts +1 -0
  94. package/dist/core/intentRouterRegressionSignals.js +11 -1
  95. package/dist/core/intentRouterRegressionSignals.js.map +1 -1
  96. package/dist/core/intentRouterReleaseSignals.js +5 -20
  97. package/dist/core/intentRouterReleaseSignals.js.map +1 -1
  98. package/dist/core/intentRouterResolution.d.ts +3 -0
  99. package/dist/core/intentRouterResolution.js +11 -0
  100. package/dist/core/intentRouterResolution.js.map +1 -0
  101. package/dist/core/intentRouterVerificationSignals.js +5 -0
  102. package/dist/core/intentRouterVerificationSignals.js.map +1 -1
  103. package/dist/core/intentRouterWorkSignals.js +4 -2
  104. package/dist/core/intentRouterWorkSignals.js.map +1 -1
  105. package/dist/core/languages/pythonManifests.js +6 -19
  106. package/dist/core/languages/pythonManifests.js.map +1 -1
  107. package/dist/core/languages/pythonPep508.js +1 -1
  108. package/dist/core/languages/pythonPep508.js.map +1 -1
  109. package/dist/core/languages/pythonProjectEvidence.js +4 -4
  110. package/dist/core/languages/pythonProjectEvidence.js.map +1 -1
  111. package/dist/core/languages/pythonPyproject.js +1 -1
  112. package/dist/core/languages/pythonPyproject.js.map +1 -1
  113. package/dist/core/languages/pythonPyprojectEvidence.d.ts +7 -0
  114. package/dist/core/languages/pythonPyprojectEvidence.js +23 -0
  115. package/dist/core/languages/pythonPyprojectEvidence.js.map +1 -0
  116. package/dist/core/languages/pythonRequirements.d.ts +2 -0
  117. package/dist/core/languages/pythonRequirements.js +74 -9
  118. package/dist/core/languages/pythonRequirements.js.map +1 -1
  119. package/dist/core/pluginAnalyzerLoading.d.ts +3 -0
  120. package/dist/core/pluginAnalyzerLoading.js +55 -0
  121. package/dist/core/pluginAnalyzerLoading.js.map +1 -0
  122. package/dist/core/pluginAnalyzerRunning.d.ts +10 -0
  123. package/dist/core/pluginAnalyzerRunning.js +32 -0
  124. package/dist/core/pluginAnalyzerRunning.js.map +1 -0
  125. package/dist/core/pluginIssueValidation.d.ts +2 -0
  126. package/dist/core/pluginIssueValidation.js +22 -0
  127. package/dist/core/pluginIssueValidation.js.map +1 -0
  128. package/dist/core/pluginManifestDiscovery.d.ts +25 -0
  129. package/dist/core/pluginManifestDiscovery.js +80 -0
  130. package/dist/core/pluginManifestDiscovery.js.map +1 -0
  131. package/dist/core/pluginModuleLoading.d.ts +8 -0
  132. package/dist/core/pluginModuleLoading.js +91 -0
  133. package/dist/core/pluginModuleLoading.js.map +1 -0
  134. package/dist/core/pluginReporterLoading.d.ts +41 -0
  135. package/dist/core/pluginReporterLoading.js +105 -0
  136. package/dist/core/pluginReporterLoading.js.map +1 -0
  137. package/dist/core/pluginRuntimeTypes.d.ts +20 -0
  138. package/dist/core/pluginRuntimeTypes.js +2 -0
  139. package/dist/core/pluginRuntimeTypes.js.map +1 -0
  140. package/dist/core/plugins.d.ts +9 -86
  141. package/dist/core/plugins.js +12 -350
  142. package/dist/core/plugins.js.map +1 -1
  143. package/dist/core/preflight.d.ts +1 -2
  144. package/dist/core/preflight.js +4 -91
  145. package/dist/core/preflight.js.map +1 -1
  146. package/dist/core/preflightEvidence.js +11 -0
  147. package/dist/core/preflightEvidence.js.map +1 -1
  148. package/dist/core/preflightInputs.d.ts +1 -0
  149. package/dist/core/preflightInputs.js.map +1 -1
  150. package/dist/core/preflightReasons.d.ts +21 -0
  151. package/dist/core/preflightReasons.js +54 -0
  152. package/dist/core/preflightReasons.js.map +1 -0
  153. package/dist/core/preflightReleaseScale.js +16 -5
  154. package/dist/core/preflightReleaseScale.js.map +1 -1
  155. package/dist/core/preflightReport.d.ts +9 -0
  156. package/dist/core/preflightReport.js +67 -0
  157. package/dist/core/preflightReport.js.map +1 -0
  158. package/dist/core/preflightSuggestedActions.js +3 -1
  159. package/dist/core/preflightSuggestedActions.js.map +1 -1
  160. package/dist/core/preflightVerdict.js +3 -0
  161. package/dist/core/preflightVerdict.js.map +1 -1
  162. package/dist/core/qualityScorecard.js +39 -21
  163. package/dist/core/qualityScorecard.js.map +1 -1
  164. package/dist/core/releaseEvidenceArtifacts.js +12 -4
  165. package/dist/core/releaseEvidenceArtifacts.js.map +1 -1
  166. package/dist/core/releaseTrain.d.ts +11 -1
  167. package/dist/core/releaseTrain.js +54 -2
  168. package/dist/core/releaseTrain.js.map +1 -1
  169. package/dist/core/repositoryScanner.js +5 -2
  170. package/dist/core/repositoryScanner.js.map +1 -1
  171. package/dist/core/review.js +2 -47
  172. package/dist/core/review.js.map +1 -1
  173. package/dist/core/reviewChangedReport.d.ts +13 -0
  174. package/dist/core/reviewChangedReport.js +38 -0
  175. package/dist/core/reviewChangedReport.js.map +1 -0
  176. package/dist/core/reviewComputation.d.ts +9 -0
  177. package/dist/core/reviewComputation.js +14 -0
  178. package/dist/core/reviewComputation.js.map +1 -0
  179. package/dist/core/reviewContractChanges.js +22 -8
  180. package/dist/core/reviewContractChanges.js.map +1 -1
  181. package/dist/core/reviewDataflow.js +18 -0
  182. package/dist/core/reviewDataflow.js.map +1 -1
  183. package/dist/core/reviewVerdict.js +37 -5
  184. package/dist/core/reviewVerdict.js.map +1 -1
  185. package/dist/core/roadmapCatalog.js +7 -203
  186. package/dist/core/roadmapCatalog.js.map +1 -1
  187. package/dist/core/roadmapCatalogPost44.d.ts +2 -0
  188. package/dist/core/roadmapCatalogPost44.js +205 -0
  189. package/dist/core/roadmapCatalogPost44.js.map +1 -0
  190. package/dist/core/roadmapCatalogTypes.d.ts +6 -0
  191. package/dist/core/roadmapCatalogTypes.js +2 -0
  192. package/dist/core/roadmapCatalogTypes.js.map +1 -0
  193. package/dist/core/startAdoptionGaps.js +1 -1
  194. package/dist/core/startAdoptionGaps.js.map +1 -1
  195. package/dist/core/startClaimRouteCriteria.d.ts +7 -0
  196. package/dist/core/startClaimRouteCriteria.js +16 -0
  197. package/dist/core/startClaimRouteCriteria.js.map +1 -0
  198. package/dist/core/startClaimTargets.d.ts +2 -0
  199. package/dist/core/startClaimTargets.js +14 -0
  200. package/dist/core/startClaimTargets.js.map +1 -0
  201. package/dist/core/startCouplingRouteCriteria.d.ts +2 -0
  202. package/dist/core/startCouplingRouteCriteria.js +13 -0
  203. package/dist/core/startCouplingRouteCriteria.js.map +1 -0
  204. package/dist/core/startDailyWorkflows.d.ts +2 -0
  205. package/dist/core/startDailyWorkflows.js +50 -0
  206. package/dist/core/startDailyWorkflows.js.map +1 -0
  207. package/dist/core/startDependencyRouteCriteria.d.ts +2 -0
  208. package/dist/core/startDependencyRouteCriteria.js +43 -0
  209. package/dist/core/startDependencyRouteCriteria.js.map +1 -0
  210. package/dist/core/startEnvTargets.d.ts +1 -0
  211. package/dist/core/startEnvTargets.js +9 -0
  212. package/dist/core/startEnvTargets.js.map +1 -0
  213. package/dist/core/startFileRouteCriteria.d.ts +2 -0
  214. package/dist/core/startFileRouteCriteria.js +56 -0
  215. package/dist/core/startFileRouteCriteria.js.map +1 -0
  216. package/dist/core/startFileTargets.d.ts +2 -0
  217. package/dist/core/startFileTargets.js +19 -0
  218. package/dist/core/startFileTargets.js.map +1 -0
  219. package/dist/core/startFixedRouteCriteria.d.ts +1 -0
  220. package/dist/core/startFixedRouteCriteria.js +90 -0
  221. package/dist/core/startFixedRouteCriteria.js.map +1 -0
  222. package/dist/core/startGeneratedConfigSearchTargets.d.ts +1 -0
  223. package/dist/core/startGeneratedConfigSearchTargets.js +22 -0
  224. package/dist/core/startGeneratedConfigSearchTargets.js.map +1 -0
  225. package/dist/core/startGraphTargets.d.ts +10 -0
  226. package/dist/core/startGraphTargets.js +82 -0
  227. package/dist/core/startGraphTargets.js.map +1 -0
  228. package/dist/core/startHighPrioritySearchTargets.d.ts +1 -0
  229. package/dist/core/startHighPrioritySearchTargets.js +24 -0
  230. package/dist/core/startHighPrioritySearchTargets.js.map +1 -0
  231. package/dist/core/startImpactRouteCriteria.d.ts +7 -0
  232. package/dist/core/startImpactRouteCriteria.js +14 -0
  233. package/dist/core/startImpactRouteCriteria.js.map +1 -0
  234. package/dist/core/startImpactTargets.d.ts +1 -0
  235. package/dist/core/startImpactTargets.js +18 -0
  236. package/dist/core/startImpactTargets.js.map +1 -0
  237. package/dist/core/startIntentApiContractQueries.d.ts +1 -0
  238. package/dist/core/startIntentApiContractQueries.js +50 -0
  239. package/dist/core/startIntentApiContractQueries.js.map +1 -0
  240. package/dist/core/startIntentAuthorizationQueries.d.ts +1 -0
  241. package/dist/core/startIntentAuthorizationQueries.js +29 -0
  242. package/dist/core/startIntentAuthorizationQueries.js.map +1 -0
  243. package/dist/core/startIntentBackgroundWorkQueries.d.ts +1 -0
  244. package/dist/core/startIntentBackgroundWorkQueries.js +23 -0
  245. package/dist/core/startIntentBackgroundWorkQueries.js.map +1 -0
  246. package/dist/core/startIntentCommunicationArtifactQueries.d.ts +1 -0
  247. package/dist/core/startIntentCommunicationArtifactQueries.js +25 -0
  248. package/dist/core/startIntentCommunicationArtifactQueries.js.map +1 -0
  249. package/dist/core/startIntentDataAccessQueries.d.ts +1 -0
  250. package/dist/core/startIntentDataAccessQueries.js +60 -0
  251. package/dist/core/startIntentDataAccessQueries.js.map +1 -0
  252. package/dist/core/startIntentDataContractQueries.d.ts +1 -0
  253. package/dist/core/startIntentDataContractQueries.js +75 -0
  254. package/dist/core/startIntentDataContractQueries.js.map +1 -0
  255. package/dist/core/startIntentDomainSearchQueries.d.ts +1 -0
  256. package/dist/core/startIntentDomainSearchQueries.js +47 -0
  257. package/dist/core/startIntentDomainSearchQueries.js.map +1 -0
  258. package/dist/core/startIntentDomainWorkflowQueries.d.ts +1 -0
  259. package/dist/core/startIntentDomainWorkflowQueries.js +28 -0
  260. package/dist/core/startIntentDomainWorkflowQueries.js.map +1 -0
  261. package/dist/core/startIntentFrontendPageRouteQueries.d.ts +1 -0
  262. package/dist/core/startIntentFrontendPageRouteQueries.js +26 -0
  263. package/dist/core/startIntentFrontendPageRouteQueries.js.map +1 -0
  264. package/dist/core/startIntentInfraArtifactQueries.d.ts +1 -0
  265. package/dist/core/startIntentInfraArtifactQueries.js +62 -0
  266. package/dist/core/startIntentInfraArtifactQueries.js.map +1 -0
  267. package/dist/core/startIntentIntegrationQueries.d.ts +1 -0
  268. package/dist/core/startIntentIntegrationQueries.js +96 -0
  269. package/dist/core/startIntentIntegrationQueries.js.map +1 -0
  270. package/dist/core/startIntentNavigationLayoutQueries.d.ts +1 -0
  271. package/dist/core/startIntentNavigationLayoutQueries.js +22 -0
  272. package/dist/core/startIntentNavigationLayoutQueries.js.map +1 -0
  273. package/dist/core/startIntentObservabilityQueries.d.ts +1 -0
  274. package/dist/core/startIntentObservabilityQueries.js +26 -0
  275. package/dist/core/startIntentObservabilityQueries.js.map +1 -0
  276. package/dist/core/startIntentReliabilityQueries.d.ts +1 -0
  277. package/dist/core/startIntentReliabilityQueries.js +85 -0
  278. package/dist/core/startIntentReliabilityQueries.js.map +1 -0
  279. package/dist/core/startIntentStateManagementQueries.d.ts +1 -0
  280. package/dist/core/startIntentStateManagementQueries.js +61 -0
  281. package/dist/core/startIntentStateManagementQueries.js.map +1 -0
  282. package/dist/core/startIntentStyleSystemQueries.d.ts +1 -0
  283. package/dist/core/startIntentStyleSystemQueries.js +26 -0
  284. package/dist/core/startIntentStyleSystemQueries.js.map +1 -0
  285. package/dist/core/startIntentTargetText.d.ts +2 -0
  286. package/dist/core/startIntentTargetText.js +9 -0
  287. package/dist/core/startIntentTargetText.js.map +1 -0
  288. package/dist/core/startIntentTargets.d.ts +10 -23
  289. package/dist/core/startIntentTargets.js +15 -1095
  290. package/dist/core/startIntentTargets.js.map +1 -1
  291. package/dist/core/startIntentTestDataQueries.d.ts +1 -0
  292. package/dist/core/startIntentTestDataQueries.js +28 -0
  293. package/dist/core/startIntentTestDataQueries.js.map +1 -0
  294. package/dist/core/startIntentToolingConfigQueries.d.ts +1 -0
  295. package/dist/core/startIntentToolingConfigQueries.js +31 -0
  296. package/dist/core/startIntentToolingConfigQueries.js.map +1 -0
  297. package/dist/core/startIntentUiInteractionQueries.d.ts +1 -0
  298. package/dist/core/startIntentUiInteractionQueries.js +71 -0
  299. package/dist/core/startIntentUiInteractionQueries.js.map +1 -0
  300. package/dist/core/startIssueTargets.d.ts +1 -0
  301. package/dist/core/startIssueTargets.js +19 -0
  302. package/dist/core/startIssueTargets.js.map +1 -0
  303. package/dist/core/startMissionControl.js +8 -2
  304. package/dist/core/startMissionControl.js.map +1 -1
  305. package/dist/core/startMissionPolicy.d.ts +2 -2
  306. package/dist/core/startMissionPolicy.js +65 -7
  307. package/dist/core/startMissionPolicy.js.map +1 -1
  308. package/dist/core/startMode.d.ts +4 -1
  309. package/dist/core/startMode.js +49 -9
  310. package/dist/core/startMode.js.map +1 -1
  311. package/dist/core/startOptions.d.ts +2 -2
  312. package/dist/core/startOptions.js +1 -1
  313. package/dist/core/startOptions.js.map +1 -1
  314. package/dist/core/startOwnershipSearchTargets.d.ts +2 -0
  315. package/dist/core/startOwnershipSearchTargets.js +23 -0
  316. package/dist/core/startOwnershipSearchTargets.js.map +1 -0
  317. package/dist/core/startPackageTargets.d.ts +4 -0
  318. package/dist/core/startPackageTargets.js +91 -0
  319. package/dist/core/startPackageTargets.js.map +1 -0
  320. package/dist/core/startPreflightRouteCriteria.d.ts +11 -0
  321. package/dist/core/startPreflightRouteCriteria.js +29 -0
  322. package/dist/core/startPreflightRouteCriteria.js.map +1 -0
  323. package/dist/core/startProductPlanningRouteCriteria.d.ts +8 -0
  324. package/dist/core/startProductPlanningRouteCriteria.js +29 -0
  325. package/dist/core/startProductPlanningRouteCriteria.js.map +1 -0
  326. package/dist/core/startQuotedTextTargets.d.ts +1 -0
  327. package/dist/core/startQuotedTextTargets.js +7 -0
  328. package/dist/core/startQuotedTextTargets.js.map +1 -0
  329. package/dist/core/startRegressionRouteCriteria.d.ts +3 -0
  330. package/dist/core/startRegressionRouteCriteria.js +62 -0
  331. package/dist/core/startRegressionRouteCriteria.js.map +1 -0
  332. package/dist/core/startReportBuilder.d.ts +1 -0
  333. package/dist/core/startReportBuilder.js +2 -1
  334. package/dist/core/startReportBuilder.js.map +1 -1
  335. package/dist/core/startReportContext.d.ts +1 -0
  336. package/dist/core/startReportContext.js +3 -0
  337. package/dist/core/startReportContext.js.map +1 -1
  338. package/dist/core/startReportScopeTargets.d.ts +1 -0
  339. package/dist/core/startReportScopeTargets.js +56 -0
  340. package/dist/core/startReportScopeTargets.js.map +1 -0
  341. package/dist/core/startRouteActions.js +39 -1
  342. package/dist/core/startRouteActions.js.map +1 -1
  343. package/dist/core/startShellArgs.d.ts +4 -0
  344. package/dist/core/startShellArgs.js +19 -0
  345. package/dist/core/startShellArgs.js.map +1 -0
  346. package/dist/core/startSuccessCriteria.d.ts +2 -3
  347. package/dist/core/startSuccessCriteria.js +15 -419
  348. package/dist/core/startSuccessCriteria.js.map +1 -1
  349. package/dist/core/startSymbolTargets.d.ts +2 -0
  350. package/dist/core/startSymbolTargets.js +28 -0
  351. package/dist/core/startSymbolTargets.js.map +1 -0
  352. package/dist/core/startTestRouteSearchTargets.d.ts +1 -0
  353. package/dist/core/startTestRouteSearchTargets.js +34 -0
  354. package/dist/core/startTestRouteSearchTargets.js.map +1 -0
  355. package/dist/core/startUnderstandRouteCriteria.d.ts +3 -0
  356. package/dist/core/startUnderstandRouteCriteria.js +97 -0
  357. package/dist/core/startUnderstandRouteCriteria.js.map +1 -0
  358. package/dist/core/telemetry.d.ts +9 -89
  359. package/dist/core/telemetry.js +33 -391
  360. package/dist/core/telemetry.js.map +1 -1
  361. package/dist/core/telemetryConfig.d.ts +58 -0
  362. package/dist/core/telemetryConfig.js +171 -0
  363. package/dist/core/telemetryConfig.js.map +1 -0
  364. package/dist/core/telemetryEvents.d.ts +57 -0
  365. package/dist/core/telemetryEvents.js +143 -0
  366. package/dist/core/telemetryEvents.js.map +1 -0
  367. package/dist/core/telemetryFlushing.d.ts +10 -0
  368. package/dist/core/telemetryFlushing.js +42 -0
  369. package/dist/core/telemetryFlushing.js.map +1 -0
  370. package/dist/core/telemetryRecording.d.ts +26 -0
  371. package/dist/core/telemetryRecording.js +38 -0
  372. package/dist/core/telemetryRecording.js.map +1 -0
  373. package/dist/core/telemetrySender.d.ts +9 -0
  374. package/dist/core/telemetrySender.js +22 -0
  375. package/dist/core/telemetrySender.js.map +1 -0
  376. package/dist/core/workplan.js +23 -11
  377. package/dist/core/workplan.js.map +1 -1
  378. package/dist/index.d.ts +4 -60
  379. package/dist/index.js +4 -60
  380. package/dist/index.js.map +1 -1
  381. package/dist/mcp/server.js +2 -13
  382. package/dist/mcp/server.js.map +1 -1
  383. package/dist/mcp/serverMessageHandling.d.ts +3 -0
  384. package/dist/mcp/serverMessageHandling.js +16 -0
  385. package/dist/mcp/serverMessageHandling.js.map +1 -0
  386. package/dist/mcp/toolDefinitions.d.ts +3 -0
  387. package/dist/mcp/toolDefinitions.js +15 -0
  388. package/dist/mcp/toolDefinitions.js.map +1 -0
  389. package/dist/mcp/tools.js +2 -12
  390. package/dist/mcp/tools.js.map +1 -1
  391. package/dist/projscan-sbom.cdx.json +6 -6
  392. package/dist/publicAgent.d.ts +22 -0
  393. package/dist/publicAgent.js +23 -0
  394. package/dist/publicAgent.js.map +1 -0
  395. package/dist/publicCore.d.ts +29 -0
  396. package/dist/publicCore.js +30 -0
  397. package/dist/publicCore.js.map +1 -0
  398. package/dist/publicLanguages.d.ts +1 -0
  399. package/dist/publicLanguages.js +2 -0
  400. package/dist/publicLanguages.js.map +1 -0
  401. package/dist/publicMcp.d.ts +8 -0
  402. package/dist/publicMcp.js +9 -0
  403. package/dist/publicMcp.js.map +1 -0
  404. package/dist/reporters/htmlAnalysisReporter.d.ts +3 -0
  405. package/dist/reporters/htmlAnalysisReporter.js +98 -0
  406. package/dist/reporters/htmlAnalysisReporter.js.map +1 -0
  407. package/dist/reporters/htmlCoverageReporter.d.ts +2 -0
  408. package/dist/reporters/htmlCoverageReporter.js +52 -0
  409. package/dist/reporters/htmlCoverageReporter.js.map +1 -0
  410. package/dist/reporters/htmlImpactReporter.d.ts +2 -0
  411. package/dist/reporters/htmlImpactReporter.js +41 -0
  412. package/dist/reporters/htmlImpactReporter.js.map +1 -0
  413. package/dist/reporters/htmlPrDiffReporter.d.ts +2 -0
  414. package/dist/reporters/htmlPrDiffReporter.js +84 -0
  415. package/dist/reporters/htmlPrDiffReporter.js.map +1 -0
  416. package/dist/reporters/htmlReporter.d.ts +20 -9
  417. package/dist/reporters/htmlReporter.js +7 -365
  418. package/dist/reporters/htmlReporter.js.map +1 -1
  419. package/dist/reporters/htmlReviewReporter.d.ts +2 -0
  420. package/dist/reporters/htmlReviewReporter.js +94 -0
  421. package/dist/reporters/htmlReviewReporter.js.map +1 -0
  422. package/dist/reporters/htmlShared.d.ts +7 -0
  423. package/dist/reporters/htmlShared.js +106 -0
  424. package/dist/reporters/htmlShared.js.map +1 -0
  425. package/dist/tool-manifest.json +2 -2
  426. package/dist/types/bugHunt.d.ts +1 -1
  427. package/dist/types/preflight.d.ts +19 -0
  428. package/dist/types/releaseTrain.d.ts +7 -0
  429. package/dist/types/start.d.ts +7 -451
  430. package/dist/types/startCommon.d.ts +87 -0
  431. package/dist/types/startCommon.js +2 -0
  432. package/dist/types/startCommon.js.map +1 -0
  433. package/dist/types/startExecution.d.ts +44 -0
  434. package/dist/types/startExecution.js +2 -0
  435. package/dist/types/startExecution.js.map +1 -0
  436. package/dist/types/startMissionControl.d.ts +92 -0
  437. package/dist/types/startMissionControl.js +2 -0
  438. package/dist/types/startMissionControl.js.map +1 -0
  439. package/dist/types/startMissionProof.d.ts +91 -0
  440. package/dist/types/startMissionProof.js +2 -0
  441. package/dist/types/startMissionProof.js.map +1 -0
  442. package/dist/types/startMissionResume.d.ts +100 -0
  443. package/dist/types/startMissionResume.js +2 -0
  444. package/dist/types/startMissionResume.js.map +1 -0
  445. package/dist/types/startMissionReview.d.ts +45 -0
  446. package/dist/types/startMissionReview.js +2 -0
  447. package/dist/types/startMissionReview.js.map +1 -0
  448. package/dist/types/startMissionTooling.d.ts +16 -0
  449. package/dist/types/startMissionTooling.js +2 -0
  450. package/dist/types/startMissionTooling.js.map +1 -0
  451. package/dist/utils/changedFiles.d.ts +1 -0
  452. package/dist/utils/changedFiles.js +7 -4
  453. package/dist/utils/changedFiles.js.map +1 -1
  454. package/dist/utils/fileWalker.d.ts +1 -0
  455. package/dist/utils/fileWalker.js +6 -1
  456. package/dist/utils/fileWalker.js.map +1 -1
  457. package/docs/GUIDE.md +55 -14
  458. package/docs/ROADMAP.md +42 -17
  459. package/docs/demos/projscan-4-1-demo.html +4 -4
  460. package/docs/examples/adoption-workflows.md +60 -1
  461. package/docs/examples/swarm-coordination.md +11 -2
  462. package/docs/projscan-mission-control.gif +0 -0
  463. package/docs/projscan-mission-control.png +0 -0
  464. package/docs/projscan-mission-proof.gif +0 -0
  465. package/docs/projscan-proof-router.png +0 -0
  466. package/package.json +12 -12
package/README.md CHANGED
@@ -7,7 +7,7 @@
7
7
  [![node](https://img.shields.io/node/v/projscan.svg)](https://nodejs.org)
8
8
  [![projscan health](https://img.shields.io/badge/projscan-A-brightgreen)](#quick-start)
9
9
 
10
- **Agent-first code intelligence.** An MCP server that lets AI coding agents (Claude Code, Codex, Cursor, Gemini, Windsurf, Cline, Continue, Zed any MCP-aware client) query your codebase with a CLI for humans and a local plugin layer for team-specific policy and reporting.
10
+ **Local proof for AI-assisted engineering workflows.** An MCP server and CLI that helps agents and humans answer three review questions: what to read before editing, what to fix before handoff, and what needs review before a release candidate.
11
11
 
12
12
  [AI Agent Quick Start](#ai-agent-integration-mcp) · [CLI Quick Start](#quick-start) · [Commands](#commands) · [Full Guide](docs/GUIDE.md) · [Roadmap](docs/ROADMAP.md)
13
13
 
@@ -19,15 +19,17 @@
19
19
 
20
20
  ## Why?
21
21
 
22
- AI coding agents are becoming the primary interface to code. When you ask an agent _"which files implement auth?"_ or _"what breaks if I bump React from 18 to 19?"_, it needs structured repo context, not raw grep output.
22
+ AI coding agents are becoming a common interface to code. When you ask an agent _"which files implement auth?"_ or _"what breaks if I bump React from 18 to 19?"_, it needs structured repo context and proof commands, not a broad scan to summarize.
23
23
 
24
- **projscan is code intelligence built for agents.** MCP clients get a fast, AST-backed, context-budget-aware view of your codebase: cited repo understanding, semantic graph, dataflow risks, review verdicts, hotspots, ownership, preflight gates, fix prompts, impact analysis, and durable session context. Everything is local and offline.
24
+ **projscan is a local evidence tool for agent-assisted engineering.** It is most useful in three daily workflows: before editing, before handoff or commit, and before release-candidate review. Start there before scanning the full command catalog.
25
25
 
26
- For teams, projscan turns that context into a repeatable PR habit. `projscan init team` creates policy, CI, ownership, and baseline memory. `projscan evidence-pack --pr-comment` gives reviewers a compact verdict with top risks, First Fix, owner routing, baseline trend memory, and exact next commands. `projscan feedback`, `projscan dogfood`, and `projscan trial` measure whether the loop actually saved time, prevented risky edits, and stayed trustworthy across real repos.
26
+ MCP clients and humans can still query repo maps, semantic graph evidence, dataflow risks, review verdicts, hotspots, ownership, preflight gates, fix prompts, impact analysis, and session context. Those tools matter when they make one of the three workflows easier to verify.
27
+
28
+ For teams, projscan can turn the workflow into a repeatable PR habit. `projscan init team` creates policy, CI, ownership, and baseline memory. `projscan evidence-pack --pr-comment` gives reviewers a compact verdict with top risks, First Fix, owner routing, baseline trend memory, and exact next commands. `projscan feedback`, `projscan dogfood`, and `projscan trial` measure whether the loop saved time, prevented risky edits, and stayed trustworthy across real repos.
27
29
 
28
30
  The local plugin platform lets teams add project-specific findings and render `doctor`, `analyze`, and `ci` in their own voice without changing the scan pipeline. Humans get the same information through the CLI.
29
31
 
30
- **Everything is local-first. No source upload. No API keys. `.gitignore` is respected by default. `.env` values are path-only unless explicitly enabled. Anonymous product telemetry is off by default and only runs after explicit opt-in.**
32
+ **Core scans run locally by default. No source upload. No projscan account or API key. `.gitignore` is respected by default. `.env` values are path-only unless explicitly enabled. Anonymous product telemetry is off by default and only runs after explicit opt-in. Network-capable paths are explicit: `audit`, registry checks, opt-in telemetry, and optional semantic model downloads.**
31
33
 
32
34
  ```bash
33
35
  npx projscan
@@ -35,29 +37,35 @@ npx projscan
35
37
 
36
38
  <img src="docs/projscan-mission-control.gif" alt="projscan Mission Control turning a plain-language goal into shortcut commands, proof commands, and review gates" width="760">
37
39
 
38
- ## What's New in 4.7.0
40
+ ## What's New in 4.9.1
39
41
 
40
- 4.7.0 turns the post-4.6 validation train into release-ready evidence: broader
41
- framework dataflow precision, offline Python requirement include support,
42
- release-train roadmap routing, and lower-risk internal hotspots.
42
+ 4.9.1 turns the post-4.8 release-prep loop into daily workflow proof hardening:
43
+ clearer Start output, quieter release-candidate proof, visible offline privacy
44
+ checks, refreshed README media, and CI aligned with the current test toolchain.
43
45
 
44
- - **Remix dataflow coverage.** Remix route actions and loaders now classify
45
- request body readers, headers, URL, signal, and params through
46
+ - **SvelteKit dataflow coverage.** `RequestEvent` handlers and hooks now
47
+ classify request body readers, headers, URL, params, and cookies through
46
48
  framework-gated source patterns.
47
- - **Python requirements includes.** Upgrade previews follow local `-r`
48
- requirements and `-c` constraints without reading outside the scan or adding
49
- network access.
50
- - **Roadmap routing.** Build-next product-planning prompts now route to
51
- release-train roadmap evidence with a read-only roadmap preview.
52
- - **Hotspot cleanup.** Dataflow risk assembly, plugin manifest validation,
53
- telemetry flushing, search index helpers, release evidence, and bug-hunt
54
- findings have been split into focused modules.
55
- - **Focused coverage.** Python lockfile, framework dataflow, intent router,
56
- preflight, MCP, and start suites now carry smaller regression tests plus
57
- architecture guards for high-risk entrypoints.
58
- - **Release readiness.** Large-train preflight warnings are now separated from
59
- concrete taint, dataflow, health, plugin, and supply-chain defects so release
60
- review can focus on scale sign-off.
49
+ - **No-release continuation routing.** Autonomous improvement prompts now route
50
+ to bounded workplans while release, publish, deploy, push, merge, and
51
+ version-bump actions stay blocked unless a release task is active.
52
+ - **Scoped evidence prompts.** Shareable redacted evidence requests can infer
53
+ top-level directory scopes such as `tests` and produce concrete local
54
+ analyze/doctor/CI commands.
55
+ - **Coordination handoffs.** Agent briefs now carry clearer merge-order hints
56
+ and preflight coordination proof paths for parallel-agent work.
57
+ - **Python dependency evidence.** Upgrade previews handle numeric-looking
58
+ package names, Poetry dependency source lines, nested requirements, and nested
59
+ constraints more reliably.
60
+ - **Quieter release-candidate proof.** Start output now avoids duplicate ready
61
+ sections, low-signal test/barrel hotspot cautions stay out of the first
62
+ action, and `privacy-check --offline` exposes the offline boundary in help.
63
+ - **Release CI alignment.** CI now runs the full source test harness on Node 20,
64
+ 22, and 24, with a separate Node 18 packed-install smoke job for published
65
+ package compatibility.
66
+ - **Maintainability cleanup.** Mission Control route criteria, public start
67
+ types, plugin loading, telemetry helpers, preflight/report assembly, code
68
+ graph indexing, and HTML reporters have been split into focused modules.
61
69
 
62
70
  <img src="docs/projscan-proof-router.png" alt="projscan intent router and proof workflow showing impact routing, setup discovery, dependency intelligence, and stable-surface guardrails" width="760">
63
71
 
@@ -155,7 +163,7 @@ Console output shows the same model for humans:
155
163
  ```text
156
164
  Execution Plan
157
165
  Run 1 ready step, resolve 2 input(s), then gather 4 proof command(s).
158
- - [ready] Next Action
166
+ - [ready] Ready Commands
159
167
  - Find exact target for impact analysis: projscan search "auth token loader" --format json
160
168
  - [blocked] Resolve Inputs
161
169
  - symbol: Replace <symbol-from-search> with an exported symbol returned by the search step.
@@ -274,6 +282,45 @@ Or run directly without installing:
274
282
  npx projscan
275
283
  ```
276
284
 
285
+ ## Daily workflows
286
+
287
+ Use these three workflows before scanning the full command catalog.
288
+
289
+ ### Before editing a feature
290
+
291
+ ```bash
292
+ projscan start --intent "what files do I need to change for auth?"
293
+ projscan understand --view change --intent "add auth token refresh" --format json
294
+ projscan preflight --mode before_edit --format json
295
+ ```
296
+
297
+ Success criteria: the agent has a cited change map, likely touched files,
298
+ read-first context, and a before-edit gate before it writes code.
299
+
300
+ ### Before handoff or commit
301
+
302
+ ```bash
303
+ projscan bug-hunt --format json
304
+ projscan preflight --mode before_commit --format json
305
+ projscan evidence-pack --pr-comment
306
+ ```
307
+
308
+ Success criteria: concrete defects are separated from manual review gates, the
309
+ handoff includes exact proof commands, and reviewers can see the next action
310
+ without reading an agent transcript.
311
+
312
+ ### Before release-candidate review
313
+
314
+ ```bash
315
+ projscan release-train --format json
316
+ projscan preflight --mode before_merge --format json
317
+ projscan evidence-pack --pr-comment
318
+ ```
319
+
320
+ Success criteria: release-readiness output stays read-only, `caution` explains
321
+ whether the work needs fixes or manual sign-off, and no version, publish, tag,
322
+ or deploy step is implied.
323
+
277
324
  ## Quick Start
278
325
 
279
326
  Run this path first inside a repository:
@@ -500,7 +547,7 @@ projscan start --intent "what should an intern work on?" # Routes to bug-hunt pr
500
547
  projscan start --intent "what is a low risk improvement?" # Routes to bug-hunt prioritization
501
548
  projscan start --intent "pick a small safe task" # Routes to bug-hunt prioritization
502
549
  projscan start --intent "what should I do next?" # Routes to an ordered before-edit workplan
503
- projscan start --intent "what should we build next?" # Routes to release-train roadmap planning
550
+ projscan start --intent "what should we build next?" # Routes to a before-edit implementation workplan
504
551
  projscan start --intent "explain issue missing-test-framework" # Routes to deep issue context
505
552
  projscan start --intent "fix issue missing-test-framework" # Routes to a concrete fix suggestion
506
553
  projscan start --intent "is user input reaching SQL sinks?" # Routes to hardening dataflow analysis
@@ -596,7 +643,7 @@ For maintainers changing trust-sensitive behavior:
596
643
  npm run test:trust-smoke
597
644
  ```
598
645
 
599
- The full command catalog is below. Most users should start with the five-command path above instead of scanning the catalog.
646
+ The full command catalog is below. Most users should start with the daily workflows above instead of scanning the catalog.
600
647
 
601
648
  <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.3.1/docs/npx%20projscan%20--help.gif" alt="npx projscan --help" width="700">
602
649
 
@@ -622,7 +669,7 @@ The report includes file/symbol-backed `claims`, `readFirst` files, entrypoints,
622
669
  | ----------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
623
670
  | `projscan analyze` | Full analysis - languages, frameworks, dependencies, issues |
624
671
  | `projscan route` | Map a plain-language goal to the best projscan tool with weighted confidence and matched keywords |
625
- | `projscan start` | First-60-seconds workflow orientation with setup diagnostics, Mission Control, top risks, and next commands. Add `--intent "<goal>"` to route a plain-language goal to route confidence, phased execution plan, ready actions, done criteria, and proof commands |
672
+ | `projscan start` | First-60-seconds workflow orientation with daily workflows, setup diagnostics, Mission Control, top risks, and next commands. Add `--intent "<goal>"` to route a plain-language goal to route confidence, phased execution plan, ready actions, done criteria, and proof commands |
626
673
  | `projscan mission-proof` | Summarize saved Mission Control proof, reviewer decisions, reruns, failed gates, and optional manual-baseline comparison |
627
674
  | `projscan first-run` | First-run setup diagnostics plus the shared `firstTenMinutes` command path |
628
675
  | `projscan init mcp` | Ready-to-paste MCP client configs for popular agent clients |
@@ -632,7 +679,7 @@ The report includes file/symbol-backed `claims`, `readFirst` files, entrypoints,
632
679
  | `projscan init github-action` | GitHub Actions PR workflow that validates and posts projscan evidence comments, then fails only on preflight blocks |
633
680
  | `projscan recipes` | Agent workflow recipes for team bootstrap, PR automation, before edit, bug hunt, approval, handoff, and pre-merge |
634
681
  | `projscan workplan` | Agent execution plan - prioritized tasks with evidence, tools, verification, and handoff text |
635
- | `projscan bug-hunt` | Prioritized bug-hunt action queue from doctor, preflight, and session evidence, with hotspot-only churn kept as a watchlist signal |
682
+ | `projscan bug-hunt` | Prioritized bug-hunt action queue from doctor, preflight, and session evidence; manual sign-off-only queues print review wording while JSON verdict compatibility is preserved, and hotspot-only churn stays as a watchlist signal |
636
683
  | `projscan agent-brief` | Compact next-agent context packet with focus items, coordination hints, guardrails, repo context, and next actions |
637
684
  | `projscan quality-scorecard` | Dimensioned quality view with health, security, tests, maintainability, coordination, and top risks |
638
685
  | `projscan understand` | Cited repo map, runtime flows, public contracts, change readiness, verification tiers, unknowns, and next commands |
@@ -715,6 +762,7 @@ projscan mission-proof --format markdown # Mission proof report for handoffs
715
762
  projscan mission-proof --write reports/mission-proof.md # Save Markdown proof
716
763
  projscan ci --format sarif # SARIF 2.1.0 for GitHub Code Scanning
717
764
  projscan analyze --report-scope src/api --redact-paths --format json # Scoped, redacted shareable evidence
765
+ projscan analyze --report-scope "src/api,packages/backend" --redact-paths --format json # Multi-scope partner evidence
718
766
  projscan doctor --report-policy apiEvidence --format markdown # Reuse a configured evidence policy
719
767
  ```
720
768
 
@@ -880,23 +928,23 @@ For real-world numbers against larger codebases, `npm run bench:references` shal
880
928
 
881
929
  Run `npm run bench` against your own machine to recalibrate.
882
930
 
883
- - **Zero network requests** — everything runs locally
884
- - **14 runtime dependencies** — still minimal
885
- - **~21 MB of vendored tree-sitter grammars**, broken down:
886
-
887
- | Grammar | Size | Languages |
888
- | --------------------- | ------: | ---------------------------------- |
889
- | `web-tree-sitter` | ~190 KB | runtime, all tree-sitter languages |
890
- | `tree-sitter-python` | ~450 KB | Python |
891
- | `tree-sitter-go` | ~210 KB | Go |
892
- | `tree-sitter-java` | ~405 KB | Java |
893
- | `tree-sitter-ruby` | ~2.0 MB | Ruby |
894
- | `tree-sitter-rust` | ~1.1 MB | Rust |
895
- | `tree-sitter-php` | ~785 KB | PHP |
896
- | `tree-sitter-c-sharp` | ~5.2 MB | C# |
897
- | `tree-sitter-cpp` | ~3.3 MB | C, C++ |
898
- | `tree-sitter-kotlin` | ~3.9 MB | Kotlin |
899
- | `tree-sitter-swift` | ~3.6 MB | Swift |
931
+ - **Local by default** — core scans run without network; `audit`, registry checks, opt-in telemetry, and optional semantic embeddings are explicit network-capable paths
932
+ - **7 direct runtime dependencies** — grammar packages are build-time sources, not global-install dependencies
933
+ - **~21 MB of vendored tree-sitter WASM grammars**, broken down:
934
+
935
+ | Vendored file | Size | Languages |
936
+ | -------------------------- | ------: | ---------------------------------- |
937
+ | `web-tree-sitter.wasm` | ~190 KB | runtime, all tree-sitter languages |
938
+ | `tree-sitter-python.wasm` | ~450 KB | Python |
939
+ | `tree-sitter-go.wasm` | ~210 KB | Go |
940
+ | `tree-sitter-java.wasm` | ~405 KB | Java |
941
+ | `tree-sitter-ruby.wasm` | ~2.0 MB | Ruby |
942
+ | `tree-sitter-rust.wasm` | ~1.1 MB | Rust |
943
+ | `tree-sitter-php.wasm` | ~785 KB | PHP |
944
+ | `tree-sitter-c_sharp.wasm` | ~5.2 MB | C# |
945
+ | `tree-sitter-cpp.wasm` | ~3.3 MB | C, C++ |
946
+ | `tree-sitter-kotlin.wasm` | ~3.9 MB | Kotlin |
947
+ | `tree-sitter-swift.wasm` | ~3.6 MB | Swift |
900
948
 
901
949
  JavaScript and TypeScript use the bundled `@babel/parser` instead of a tree-sitter grammar, so they don't appear in this table.
902
950
 
@@ -940,7 +988,7 @@ projscan reads your source code so it can be useful; it does not send your sourc
940
988
 
941
989
  ### Patterns supply-chain scanners flag, and why they're benign here
942
990
 
943
- If you read projscan's [Socket report](https://socket.dev/npm/package/projscan), you'll see four supply-chain alerts. Here's a one-line answer to each:
991
+ projscan's [Socket report](https://socket.dev/npm/package/projscan) currently shows four supply-chain alerts. Each alert maps to one of these code paths:
944
992
 
945
993
  - **"Network access"** — comes from `web-tree-sitter`'s internal API surface; we feed it local wasm files at `dist/grammars/`. No outbound traffic.
946
994
  - **"Dynamic require" / runtime import** — optional dependencies lazy-load from literal module names; opt-in local plugins load validated manifest module paths under `.projscan-plugins/`. Plugin execution is local code execution by design, gated by `PROJSCAN_PLUGINS_PREVIEW=1`.
@@ -956,7 +1004,7 @@ If you read projscan's [Socket report](https://socket.dev/npm/package/projscan),
956
1004
 
957
1005
  ## Dogfooding
958
1006
 
959
- projscan runs against itself in CI on every PR. The dogfood loop is the most direct evidence we can offer that the tool works on real code, not just synthetic fixtures.
1007
+ projscan runs against itself in CI on every PR. The dogfood loop is the most direct evidence we can offer that the tool works on real code instead of synthetic fixtures alone.
960
1008
 
961
1009
  ```sh
962
1010
  # .github/workflows/ci.yml — runs after the unit tests
@@ -1102,7 +1150,7 @@ projscan diff --format markdown # Markdown diff for PRs
1102
1150
 
1103
1151
  ## Hotspots - Where to Fix First
1104
1152
 
1105
- A flat health score doesn't tell you what to do. **`projscan hotspots`** combines `git log` churn, file complexity, open issues, recency, and **ownership** into a single risk score per file - so you know where refactoring or review will actually pay off.
1153
+ A flat health score doesn't tell you what to do. **`projscan hotspots`** combines `git log` churn, file complexity, open issues, recency, and **ownership** into a single risk score per file, so you know where refactoring or review will pay off.
1106
1154
 
1107
1155
  <img src="https://abhiyoheswaran.com/images/projscan/hotspots-poster.png" alt="projscan hotspots output ranking files by composite risk score" width="700">
1108
1156
 
@@ -1132,11 +1180,11 @@ projscan diff --save-baseline # Snapshots health + hotspots
1132
1180
  projscan diff # Shows which hotspots rose / fell
1133
1181
  ```
1134
1182
 
1135
- The baseline file now captures top hotspots too, so `diff` surfaces files that are **getting worse** (not just new issues).
1183
+ The baseline file now captures top hotspots too, so `diff` surfaces files that are **getting worse** alongside new issues.
1136
1184
 
1137
1185
  ## Dependency Health
1138
1186
 
1139
- projscan ships three focused commands for keeping your dependency graph healthy - all **offline** by default, no registry calls.
1187
+ projscan ships focused commands for checking your dependency graph. Drift and upgrade previews run **offline** by default; `audit` wraps `npm audit` and can contact the npm registry.
1140
1188
 
1141
1189
  ```bash
1142
1190
  projscan outdated # Which declared deps drift from what's installed?
@@ -1185,11 +1233,11 @@ Coverage is also automatically joined into `projscan hotspots` when one of those
1185
1233
 
1186
1234
  ## AI Agent Integration (MCP)
1187
1235
 
1188
- **This is the primary way to use projscan.** `projscan mcp` starts an [MCP](https://modelcontextprotocol.io) server over stdio so AI coding agents can query your codebase with real structural accuracy - not regex, not grep.
1236
+ Use MCP when an AI coding agent should call projscan directly. `projscan mcp` starts an [MCP](https://modelcontextprotocol.io) server over stdio and exposes the same local proof behind the daily workflows: repo context, impact, hotspots, review gates, and next commands.
1189
1237
 
1190
1238
  <img src="https://raw.githubusercontent.com/abhiyoheswaran1/projscan/v4.3.1/docs/projscan-agent-demo.gif" alt="projscan answering two agent questions: what breaks if I rename buildCodeGraph (impact analysis with definitions, direct callers, transitive reach), and where should I fix first (ranked hotspots with cyclomatic complexity)" width="700">
1191
1239
 
1192
- Two questions an agent asks; structural answers in milliseconds. _"What breaks if I rename `buildCodeGraph`?"_ → 31 direct callers, 97 files reachable. _"Where should I fix first?"_ → ranked hotspots with AST cyclomatic complexity, churn, and ownership signals.
1240
+ Two common agent questions: _"What breaks if I rename `buildCodeGraph`?"_ → 31 direct callers, 97 files reachable. _"Where should I fix first?"_ → ranked hotspots with AST cyclomatic complexity, churn, and ownership signals.
1193
1241
 
1194
1242
  ### Claude Code
1195
1243
 
@@ -1347,7 +1395,7 @@ Capability is advertised under `experimental.fileChanged` on `initialize` so cli
1347
1395
  - **`projscan_start`** _(3.0.4)_ - first-60-seconds repo orientation. Composes setup diagnostics, `firstTenMinutes`, workflow recipes, workplan, quality scorecard, top risks, adoption gaps, next commands, and optional handoff payload.
1348
1396
  - **`projscan_understand`** _(3.4)_ - cited repo-comprehension report with `map`, `flow`, `contracts`, `change`, and `verify` views, read-first files, unknowns, change readiness, verification tiers, and exact next commands.
1349
1397
  - **`projscan_semantic_graph`** _(3.0; query mode 4.0)_ - the code graph, two ways. With no `query`: the stable v3 semantic graph contract (file, function, package, and symbol nodes plus `defines`, `imports`, `imports_package`, `exports`, and `calls` edges). With `query: { direction, file?, symbol? }`: one cheap targeted lookup — `imports`, `exports`, `importers`, `symbol_defs`, `package_importers` — with millisecond responses on a warm cache. (Subsumes the former `projscan_graph`, removed in 4.0.)
1350
- - **`projscan_dataflow`** _(3.0)_ - focused direct, propagated, and bridge source-to-sink dataflow risks. Next.js route body readers and URL reads plus Hono, Express, Fastify, and Koa request sources are framework-aware, DB/write sinks are receiver-sensitive, and defaults suppress test-file paths, broad readFile/writeFile noise, JavaScript RegExp.exec false positives, and generated-code anxiety; opt into broader scans with `include_tests` / `include_broad_file_io` / `include_generated` or the matching CLI flags.
1398
+ - **`projscan_dataflow`** _(3.0)_ - focused direct, propagated, and bridge source-to-sink dataflow risks. Next.js route body readers and URL reads plus Remix, SvelteKit, Astro, Hono, Express, Fastify, and Koa request sources are framework-aware, DB/write sinks are receiver-sensitive, and defaults suppress test-file paths, broad readFile/writeFile noise, JavaScript RegExp.exec false positives, and generated-code anxiety; opt into broader scans with `include_tests` / `include_broad_file_io` / `include_generated` or the matching CLI flags.
1351
1399
  - **`projscan_search`** - fast search across `symbols` (exported names), `files` (path substring), or `content` (source substring with line + excerpt). Sub-file mode (`sub_file: true`) embeds per-function for sharper semantic results _(0.15)_.
1352
1400
  - **`projscan_coupling`** _(0.11)_ - per-file fan-in / fan-out / instability + circular-import cycles (Tarjan SCC). Filter by `direction: cycles_only | high_fan_in | high_fan_out`.
1353
1401
  - **`projscan_pr_diff`** _(0.11)_ - structural diff between two git refs. Returns added/removed/modified files with explicit lists of exports, imports, and call sites that changed, plus ΔCC and Δfan-in.
@@ -1361,7 +1409,7 @@ Capability is advertised under `experimental.fileChanged` on `initialize` so cli
1361
1409
  - **`projscan_quality_scorecard`** _(2.3)_ - dimensioned quality view across health, security, tests, maintainability, coordination, top risks, and verification commands.
1362
1410
  - **`projscan_adoption`** _(2.9)_ - adoption helper for MCP config snippets, workflow recipes, and first-run diagnostics with the shared `firstTenMinutes` path.
1363
1411
  - **`projscan_fix_suggest`** _(0.14)_ - structured action prompt for any open issue: headline, why it matters, where, one-paragraph instruction, optional suggested test. Closes the diagnose → fix loop.
1364
- - **`projscan_explain_issue`** _(0.14)_ - deep dive on one issue: code excerpt, related issues in the same file, similar past commits via `git log --grep`, plus the structured FixSuggestion.
1412
+ - **`projscan_explain_issue`** _(0.14)_ - focused context for one issue: code excerpt, related issues in the same file, similar past commits via `git log --grep`, plus the structured FixSuggestion.
1365
1413
  - **`projscan_impact`** _(0.15)_ - transitive blast-radius for a file or symbol. BFS over reverse imports + symbol callsites. Use BEFORE renaming or deleting to see what breaks.
1366
1414
  - **`projscan_collision`** _(3.6)_ - detect change collisions across the repo's in-flight git worktrees (parallel agents). Flags same-file edits and dependency overlaps (one worktree edits a file another's change imports) before the branches merge. Local-first; needs ≥2 worktrees.
1367
1415
  - **`projscan_claim`** _(3.6)_ - advisory claims/leases over files, directories, or symbols, shared across the repo's worktrees. `add` returns contention when another agent already holds an overlapping target; `list` / `release` manage them. Local-first.
@@ -1,6 +1,7 @@
1
1
  import chalk from 'chalk';
2
2
  import { assertFormatSupported, getRootPath, maybeCompactBanner, program, setupLogLevel, } from '../_shared.js';
3
3
  import { computeBugHunt } from '../../core/bugHunt.js';
4
+ const REVIEW_SIGNAL_FILE_PREVIEW_LIMIT = 3;
4
5
  export function registerBugHunt() {
5
6
  program
6
7
  .command('bug-hunt')
@@ -29,26 +30,54 @@ export function registerBugHunt() {
29
30
  });
30
31
  }
31
32
  function printBugHunt(report) {
32
- const color = report.verdict === 'block' ? chalk.red : report.verdict === 'fix' ? chalk.yellow : chalk.green;
33
- console.log(color(`Bug Hunt: ${report.verdict}`));
33
+ const displayVerdict = bugHuntDisplayVerdict(report);
34
+ const color = report.verdict === 'block' ? chalk.red : displayVerdict === 'clean' ? chalk.green : chalk.yellow;
35
+ console.log(color(`Bug Hunt: ${displayVerdict}`));
34
36
  console.log(report.summary);
35
37
  console.log('');
36
- console.log(chalk.bold('Action Queue'));
37
- for (const finding of report.fixQueue) {
38
- printFinding(finding);
39
- }
38
+ printFindingSection(report);
40
39
  console.log('');
41
40
  console.log(chalk.bold('Verify'));
42
41
  for (const entry of report.verificationMatrix) {
43
42
  console.log(`- ${entry.command}`);
44
43
  }
45
44
  }
46
- function printFinding(finding) {
47
- const files = finding.files.length > 0 ? ` (${finding.files.join(', ')})` : '';
45
+ function printFindingSection(report) {
46
+ if (report.fixQueue.length > 0) {
47
+ console.log(chalk.bold('Action Queue'));
48
+ for (const finding of report.fixQueue)
49
+ printFinding(finding);
50
+ return;
51
+ }
52
+ const reviewSignals = report.verdict === 'review' ? report.topSuspects.filter(isReviewSignal) : [];
53
+ if (reviewSignals.length === 0)
54
+ return;
55
+ console.log(chalk.bold('Review Signals'));
56
+ for (const finding of reviewSignals)
57
+ printFinding(finding, { maxFiles: REVIEW_SIGNAL_FILE_PREVIEW_LIMIT });
58
+ }
59
+ function printFinding(finding, options = {}) {
60
+ const files = findingFileSummary(finding.files, options.maxFiles);
48
61
  console.log(`- ${chalk.bold(`[${finding.priority}] ${finding.title}`)}${files}`);
49
62
  console.log(` ${finding.why}`);
50
63
  console.log(` verify: ${finding.verification.commands.join(' && ')}`);
51
64
  }
65
+ function findingFileSummary(files, maxFiles) {
66
+ if (files.length === 0)
67
+ return '';
68
+ if (!maxFiles || files.length <= maxFiles)
69
+ return ` (${files.join(', ')})`;
70
+ return ` (${files.slice(0, maxFiles).join(', ')}, +${files.length - maxFiles} more)`;
71
+ }
72
+ function isReviewSignal(finding) {
73
+ return (finding.source === 'preflight' && finding.evidence.some((entry) => entry.source === 'release'));
74
+ }
75
+ function bugHuntDisplayVerdict(report) {
76
+ if (report.summary.startsWith('review:') && report.summary.includes('manual sign-off action')) {
77
+ return 'review';
78
+ }
79
+ return report.verdict;
80
+ }
52
81
  function parsePositiveInt(value) {
53
82
  const parsed = Number.parseInt(value, 10);
54
83
  if (!Number.isFinite(parsed) || parsed <= 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"bugHunt.js","sourceRoot":"","sources":["../../../src/cli/commands/bugHunt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bugHunt.js","sourceRoot":"","sources":["../../../src/cli/commands/bugHunt.ts"],"names":[],"mappings":"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"}
@@ -55,8 +55,8 @@ function printConsoleReport(report) {
55
55
  : report.verdict === 'caution'
56
56
  ? chalk.yellow
57
57
  : chalk.green;
58
- console.log(color(`Preflight: ${report.verdict}`));
59
- console.log(report.summary);
58
+ console.log(color(preflightHeadline(report)));
59
+ console.log(preflightSummary(report));
60
60
  if (report.requiredChecks.length > 0) {
61
61
  console.log('');
62
62
  console.log(chalk.bold('Required checks'));
@@ -89,4 +89,20 @@ function printConsoleReport(report) {
89
89
  console.log('');
90
90
  console.log(chalk.dim('For agent workflows, run `projscan workplan --mode before_edit --format json` or `projscan recipes`.'));
91
91
  }
92
+ function preflightHeadline(report) {
93
+ if (isManualSignoffCaution(report))
94
+ return 'Preflight: manual sign-off';
95
+ return `Preflight: ${report.verdict}`;
96
+ }
97
+ function preflightSummary(report) {
98
+ if (!isManualSignoffCaution(report))
99
+ return report.summary;
100
+ return report.summary.replace(/^caution:\s*/iu, '');
101
+ }
102
+ function isManualSignoffCaution(report) {
103
+ return (report.verdict === 'caution' &&
104
+ report.evidence.releaseScale?.detected === true &&
105
+ report.reasons.some((reason) => reason.source === 'release') &&
106
+ !report.reasons.some((reason) => reason.severity === 'error'));
107
+ }
92
108
  //# sourceMappingURL=preflight.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"preflight.js","sourceRoot":"","sources":["../../../src/cli/commands/preflight.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"preflight.js","sourceRoot":"","sources":["../../../src/cli/commands/preflight.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,16 @@
1
1
  import chalk from 'chalk';
2
2
  import { program, getRootPath, loadProjectConfig, setupLogLevel, maybeCompactBanner, assertFormatSupported, } from '../_shared.js';
3
3
  import { scanRepository } from '../../core/repositoryScanner.js';
4
- import { buildPrivacyCheckReport } from '../../core/privacy.js';
4
+ import { buildPrivacyCheckReport, enableOfflineMode, } from '../../core/privacy.js';
5
5
  export function registerPrivacyCheck() {
6
6
  program
7
7
  .command('privacy-check')
8
8
  .description('Show the local privacy, ignore, telemetry, and network boundary')
9
- .action(async () => {
9
+ .option('--offline', 'block network-capable features for this privacy-check run')
10
+ .action(async (options) => {
10
11
  setupLogLevel();
12
+ if (options.offline)
13
+ enableOfflineMode();
11
14
  maybeCompactBanner();
12
15
  const rootPath = getRootPath();
13
16
  const format = assertFormatSupported('privacy-check');
@@ -1 +1 @@
1
- {"version":3,"file":"privacyCheck.js","sourceRoot":"","sources":["../../../src/cli/commands/privacyCheck.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"privacyCheck.js","sourceRoot":"","sources":["../../../src/cli/commands/privacyCheck.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import chalk from 'chalk';
2
2
  import { assertFormatSupported, getRootPath, maybeCompactBanner, program, setupLogLevel, } from '../_shared.js';
3
- import { computeReleaseTrain } from '../../core/releaseTrain.js';
3
+ import { computeReleaseTrain, resolveReleaseTrainReadinessAction, } from '../../core/releaseTrain.js';
4
4
  export function registerReleaseTrain() {
5
5
  program
6
6
  .command('release-train')
@@ -30,6 +30,7 @@ function collectLine(value, previous) {
30
30
  return [...previous, value];
31
31
  }
32
32
  function printReleaseTrain(report) {
33
+ const readinessAction = resolveReleaseTrainReadinessAction(report.readiness);
33
34
  const color = report.readiness.verdict === 'block'
34
35
  ? chalk.red
35
36
  : report.readiness.verdict === 'caution'
@@ -39,6 +40,13 @@ function printReleaseTrain(report) {
39
40
  console.log(`Current version: ${report.currentVersion ?? 'unknown'}`);
40
41
  console.log(`Product lines: ${report.plan.lines.join(', ')}`);
41
42
  console.log('');
43
+ console.log(chalk.bold('Readiness'));
44
+ console.log(`- verdict: ${report.readiness.verdict}`);
45
+ console.log(`- summary: ${report.readiness.summary}`);
46
+ console.log(`- next: ${readinessAction.label}`);
47
+ console.log(` command: ${readinessAction.command}`);
48
+ console.log(` detail: ${readinessAction.detail}`);
49
+ console.log('');
42
50
  console.log(chalk.bold('Tracks'));
43
51
  for (const track of report.tracks) {
44
52
  console.log(`- ${track.line}: ${track.theme}`);
@@ -1 +1 @@
1
- {"version":3,"file":"releaseTrain.js","sourceRoot":"","sources":["../../../src/cli/commands/releaseTrain.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"releaseTrain.js","sourceRoot":"","sources":["../../../src/cli/commands/releaseTrain.ts"],"names":[],"mappings":"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"}
@@ -1,33 +1,10 @@
1
1
  import { program } from '../_shared.js';
2
- import { parsePositiveInt, runStartCommandAction } from './startAction.js';
2
+ import { runStartCommandAction } from './startAction.js';
3
+ import { registerStartOptions } from './startOptionsRegistration.js';
3
4
  export function registerStart() {
4
- program
5
+ const startCommand = program
5
6
  .command('start')
6
- .description('Orient an engineer or agent with the next best workflow for this repo')
7
- .option('--mode <mode>', 'before_edit, before_commit, before_merge, refactor, release, bug_hunt, or hardening')
8
- .option('--intent <text>', 'plain-language goal to route into the next best action')
9
- .option('--mission <dir>', 'read an existing Mission Control bundle and include proof outcome')
10
- .option('--max-tasks <count>', 'maximum workplan tasks to inspect', parsePositiveInt)
11
- .option('--max-risks <count>', 'maximum start risks to return', parsePositiveInt)
12
- .option('--include-handoff', 'include a compact handoff payload')
13
- .option('--handoff-prompt', 'print only the concise Mission Control handoff prompt')
14
- .option('--next-command', 'print only the current Mission Control cursor command')
15
- .option('--next-tool-call', 'print only the current Mission Control cursor MCP tool call as JSON')
16
- .option('--ready-tool-calls', 'print all currently ready Mission Control MCP tool calls as compact JSON')
17
- .option('--proof-commands', 'print only ready Mission Control proof commands')
18
- .option('--checklist', 'print only the Mission Control resume checklist')
19
- .option('--resume-json', 'print only the Mission Control resume object as compact JSON')
20
- .option('--handoff-json', 'print only the Mission Control handoff object as compact JSON')
21
- .option('--save-mission <dir>', 'write the Mission Control bundle to this directory')
22
- .option('--runbook', 'print only the Mission Control Markdown runbook')
23
- .option('--task-card', 'print only the Mission Control Markdown task card')
24
- .option('--review-gate', 'print only the Mission Control review gate')
25
- .option('--review-gate-json', 'print only the Mission Control review gate as JSON')
26
- .option('--review-policy', 'print only the Mission Control review policy as JSON')
27
- .option('--review-replies', 'print only the Mission Control reviewer reply choices')
28
- .option('--mission-script', 'print the Mission Control shell script')
29
- .option('--shortcuts', 'print the Mission Control shortcut command index')
30
- .option('--shortcuts-json', 'print the Mission Control shortcut command index as JSON')
31
- .action(runStartCommandAction);
7
+ .description('Orient an engineer or agent with the next best workflow for this repo');
8
+ registerStartOptions(startCommand).action(runStartCommandAction);
32
9
  }
33
10
  //# sourceMappingURL=start.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/cli/commands/start.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAE3E,MAAM,UAAU,aAAa;IAC3B,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,uEAAuE,CAAC;SACpF,MAAM,CACL,eAAe,EACf,qFAAqF,CACtF;SACA,MAAM,CAAC,iBAAiB,EAAE,wDAAwD,CAAC;SACnF,MAAM,CAAC,iBAAiB,EAAE,mEAAmE,CAAC;SAC9F,MAAM,CAAC,qBAAqB,EAAE,mCAAmC,EAAE,gBAAgB,CAAC;SACpF,MAAM,CAAC,qBAAqB,EAAE,+BAA+B,EAAE,gBAAgB,CAAC;SAChF,MAAM,CAAC,mBAAmB,EAAE,mCAAmC,CAAC;SAChE,MAAM,CAAC,kBAAkB,EAAE,uDAAuD,CAAC;SACnF,MAAM,CAAC,gBAAgB,EAAE,uDAAuD,CAAC;SACjF,MAAM,CACL,kBAAkB,EAClB,qEAAqE,CACtE;SACA,MAAM,CACL,oBAAoB,EACpB,0EAA0E,CAC3E;SACA,MAAM,CAAC,kBAAkB,EAAE,iDAAiD,CAAC;SAC7E,MAAM,CAAC,aAAa,EAAE,iDAAiD,CAAC;SACxE,MAAM,CAAC,eAAe,EAAE,8DAA8D,CAAC;SACvF,MAAM,CAAC,gBAAgB,EAAE,+DAA+D,CAAC;SACzF,MAAM,CAAC,sBAAsB,EAAE,oDAAoD,CAAC;SACpF,MAAM,CAAC,WAAW,EAAE,iDAAiD,CAAC;SACtE,MAAM,CAAC,aAAa,EAAE,mDAAmD,CAAC;SAC1E,MAAM,CAAC,eAAe,EAAE,4CAA4C,CAAC;SACrE,MAAM,CAAC,oBAAoB,EAAE,oDAAoD,CAAC;SAClF,MAAM,CAAC,iBAAiB,EAAE,sDAAsD,CAAC;SACjF,MAAM,CAAC,kBAAkB,EAAE,uDAAuD,CAAC;SACnF,MAAM,CAAC,kBAAkB,EAAE,wCAAwC,CAAC;SACpE,MAAM,CAAC,aAAa,EAAE,kDAAkD,CAAC;SACzE,MAAM,CAAC,kBAAkB,EAAE,0DAA0D,CAAC;SACtF,MAAM,CAAC,qBAAqB,CAAC,CAAC;AACnC,CAAC"}
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/cli/commands/start.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAErE,MAAM,UAAU,aAAa;IAC3B,MAAM,YAAY,GAAG,OAAO;SACzB,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,uEAAuE,CAAC,CAAC;IAExF,oBAAoB,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;AACnE,CAAC"}