projscan 4.4.0 → 4.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +36 -12
- package/dist/analyzers/pythonDependencyRiskCheck.js +1 -1
- package/dist/analyzers/pythonDependencyRiskCheck.js.map +1 -1
- package/dist/cli/_shared.d.ts +4 -5
- package/dist/cli/_shared.js +41 -188
- package/dist/cli/_shared.js.map +1 -1
- package/dist/cli/architectureLayers.d.ts +2 -0
- package/dist/cli/architectureLayers.js +112 -0
- package/dist/cli/architectureLayers.js.map +1 -0
- package/dist/cli/bannerDisplay.d.ts +9 -0
- package/dist/cli/bannerDisplay.js +18 -0
- package/dist/cli/bannerDisplay.js.map +1 -0
- package/dist/cli/changedIssueFilter.d.ts +10 -0
- package/dist/cli/changedIssueFilter.js +24 -0
- package/dist/cli/changedIssueFilter.js.map +1 -0
- package/dist/cli/commandPath.d.ts +2 -0
- package/dist/cli/commandPath.js +12 -0
- package/dist/cli/commandPath.js.map +1 -0
- package/dist/cli/commands/agentBrief.js +11 -0
- package/dist/cli/commands/agentBrief.js.map +1 -1
- package/dist/cli/commands/analyze.js +17 -6
- package/dist/cli/commands/analyze.js.map +1 -1
- package/dist/cli/commands/ci.js +15 -3
- package/dist/cli/commands/ci.js.map +1 -1
- package/dist/cli/commands/coordinate.js +27 -0
- package/dist/cli/commands/coordinate.js.map +1 -1
- package/dist/cli/commands/doctor.js +16 -4
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/upgrade.js +1 -1
- package/dist/cli/commands/upgrade.js.map +1 -1
- package/dist/cli/pluginReporter.d.ts +14 -0
- package/dist/cli/pluginReporter.js +46 -0
- package/dist/cli/pluginReporter.js.map +1 -0
- package/dist/cli/projectConfig.d.ts +12 -0
- package/dist/cli/projectConfig.js +41 -0
- package/dist/cli/projectConfig.js.map +1 -0
- package/dist/cli/treeSlice.d.ts +3 -0
- package/dist/cli/treeSlice.js +12 -0
- package/dist/cli/treeSlice.js.map +1 -0
- package/dist/core/ast.d.ts +4 -76
- package/dist/core/ast.js +11 -630
- package/dist/core/ast.js.map +1 -1
- package/dist/core/astBodySignals.d.ts +17 -0
- package/dist/core/astBodySignals.js +107 -0
- package/dist/core/astBodySignals.js.map +1 -0
- package/dist/core/astFunctionCollector.d.ts +11 -0
- package/dist/core/astFunctionCollector.js +140 -0
- package/dist/core/astFunctionCollector.js.map +1 -0
- package/dist/core/astFunctionNames.d.ts +2 -0
- package/dist/core/astFunctionNames.js +53 -0
- package/dist/core/astFunctionNames.js.map +1 -0
- package/dist/core/astFunctionNodes.d.ts +2 -0
- package/dist/core/astFunctionNodes.js +12 -0
- package/dist/core/astFunctionNodes.js.map +1 -0
- package/dist/core/astMembers.d.ts +13 -0
- package/dist/core/astMembers.js +116 -0
- package/dist/core/astMembers.js.map +1 -0
- package/dist/core/astModuleSignals.d.ts +3 -0
- package/dist/core/astModuleSignals.js +140 -0
- package/dist/core/astModuleSignals.js.map +1 -0
- package/dist/core/astParser.d.ts +11 -0
- package/dist/core/astParser.js +38 -0
- package/dist/core/astParser.js.map +1 -0
- package/dist/core/astProgramSignals.d.ts +11 -0
- package/dist/core/astProgramSignals.js +97 -0
- package/dist/core/astProgramSignals.js.map +1 -0
- package/dist/core/astTypes.d.ts +78 -0
- package/dist/core/astTypes.js +2 -0
- package/dist/core/astTypes.js.map +1 -0
- package/dist/core/codeGraph.d.ts +3 -28
- package/dist/core/codeGraph.js +3 -231
- package/dist/core/codeGraph.js.map +1 -1
- package/dist/core/codeGraphFanMetrics.d.ts +17 -0
- package/dist/core/codeGraphFanMetrics.js +89 -0
- package/dist/core/codeGraphFanMetrics.js.map +1 -0
- package/dist/core/codeGraphIndexes.d.ts +23 -0
- package/dist/core/codeGraphIndexes.js +57 -0
- package/dist/core/codeGraphIndexes.js.map +1 -0
- package/dist/core/codeGraphParsing.d.ts +20 -0
- package/dist/core/codeGraphParsing.js +104 -0
- package/dist/core/codeGraphParsing.js.map +1 -0
- package/dist/core/codeGraphTypes.d.ts +28 -0
- package/dist/core/codeGraphTypes.js +2 -0
- package/dist/core/codeGraphTypes.js.map +1 -0
- package/dist/core/collisionDetector.d.ts +2 -0
- package/dist/core/collisionDetector.js +17 -12
- package/dist/core/collisionDetector.js.map +1 -1
- package/dist/core/coordination.d.ts +4 -2
- package/dist/core/coordination.js +40 -4
- package/dist/core/coordination.js.map +1 -1
- package/dist/core/coordinationEvidence.d.ts +32 -0
- package/dist/core/coordinationEvidence.js +101 -0
- package/dist/core/coordinationEvidence.js.map +1 -0
- package/dist/core/dataflow.js +2 -1
- package/dist/core/dataflow.js.map +1 -1
- package/dist/core/fileAccess.d.ts +16 -0
- package/dist/core/fileAccess.js +78 -0
- package/dist/core/fileAccess.js.map +1 -0
- package/dist/core/fileExportTypes.d.ts +2 -0
- package/dist/core/fileExportTypes.js +16 -0
- package/dist/core/fileExportTypes.js.map +1 -0
- package/dist/core/fileGraphMetrics.d.ts +4 -0
- package/dist/core/fileGraphMetrics.js +34 -0
- package/dist/core/fileGraphMetrics.js.map +1 -0
- package/dist/core/fileInspectionEvidence.d.ts +13 -0
- package/dist/core/fileInspectionEvidence.js +14 -0
- package/dist/core/fileInspectionEvidence.js.map +1 -0
- package/dist/core/fileInspectionGraph.d.ts +5 -0
- package/dist/core/fileInspectionGraph.js +29 -0
- package/dist/core/fileInspectionGraph.js.map +1 -0
- package/dist/core/fileInspector.d.ts +4 -4
- package/dist/core/fileInspector.js +28 -215
- package/dist/core/fileInspector.js.map +1 -1
- package/dist/core/fileIssues.d.ts +1 -0
- package/dist/core/fileIssues.js +18 -0
- package/dist/core/fileIssues.js.map +1 -0
- package/dist/core/filePurpose.d.ts +2 -0
- package/dist/core/filePurpose.js +61 -0
- package/dist/core/filePurpose.js.map +1 -0
- package/dist/core/frameworkExpressSources.d.ts +4 -0
- package/dist/core/frameworkExpressSources.js +95 -0
- package/dist/core/frameworkExpressSources.js.map +1 -0
- package/dist/core/frameworkFastifySources.d.ts +4 -0
- package/dist/core/frameworkFastifySources.js +74 -0
- package/dist/core/frameworkFastifySources.js.map +1 -0
- package/dist/core/frameworkHonoSources.d.ts +4 -0
- package/dist/core/frameworkHonoSources.js +73 -0
- package/dist/core/frameworkHonoSources.js.map +1 -0
- package/dist/core/frameworkKoaSources.d.ts +4 -0
- package/dist/core/frameworkKoaSources.js +81 -0
- package/dist/core/frameworkKoaSources.js.map +1 -0
- package/dist/core/frameworkNextRouteSources.d.ts +2 -0
- package/dist/core/frameworkNextRouteSources.js +55 -0
- package/dist/core/frameworkNextRouteSources.js.map +1 -0
- package/dist/core/frameworkSources.d.ts +1 -1
- package/dist/core/frameworkSources.js +16 -125
- package/dist/core/frameworkSources.js.map +1 -1
- package/dist/core/hotspotAnalyzer.d.ts +2 -18
- package/dist/core/hotspotAnalyzer.js +15 -477
- package/dist/core/hotspotAnalyzer.js.map +1 -1
- package/dist/core/hotspotBuilder.d.ts +14 -0
- package/dist/core/hotspotBuilder.js +70 -0
- package/dist/core/hotspotBuilder.js.map +1 -0
- package/dist/core/hotspotCandidates.d.ts +9 -0
- package/dist/core/hotspotCandidates.js +63 -0
- package/dist/core/hotspotCandidates.js.map +1 -0
- package/dist/core/hotspotGit.d.ts +10 -0
- package/dist/core/hotspotGit.js +152 -0
- package/dist/core/hotspotGit.js.map +1 -0
- package/dist/core/hotspotIssues.d.ts +2 -0
- package/dist/core/hotspotIssues.js +83 -0
- package/dist/core/hotspotIssues.js.map +1 -0
- package/dist/core/hotspotLines.d.ts +2 -0
- package/dist/core/hotspotLines.js +24 -0
- package/dist/core/hotspotLines.js.map +1 -0
- package/dist/core/hotspotMemory.d.ts +2 -0
- package/dist/core/hotspotMemory.js +21 -0
- package/dist/core/hotspotMemory.js.map +1 -0
- package/dist/core/hotspotRanking.d.ts +13 -0
- package/dist/core/hotspotRanking.js +44 -0
- package/dist/core/hotspotRanking.js.map +1 -0
- package/dist/core/hotspotScoring.d.ts +23 -0
- package/dist/core/hotspotScoring.js +128 -0
- package/dist/core/hotspotScoring.js.map +1 -0
- package/dist/core/indexCache.js +4 -1
- package/dist/core/indexCache.js.map +1 -1
- package/dist/core/intentRouter.d.ts +3 -16
- package/dist/core/intentRouter.js +5 -7348
- package/dist/core/intentRouter.js.map +1 -1
- package/dist/core/intentRouterCatalog.d.ts +16 -0
- package/dist/core/intentRouterCatalog.js +1692 -0
- package/dist/core/intentRouterCatalog.js.map +1 -0
- package/dist/core/intentRouterCoordinationSignals.d.ts +12 -0
- package/dist/core/intentRouterCoordinationSignals.js +111 -0
- package/dist/core/intentRouterCoordinationSignals.js.map +1 -0
- package/dist/core/intentRouterDependencySignals.d.ts +9 -0
- package/dist/core/intentRouterDependencySignals.js +226 -0
- package/dist/core/intentRouterDependencySignals.js.map +1 -0
- package/dist/core/intentRouterKeywordContext.d.ts +14 -0
- package/dist/core/intentRouterKeywordContext.js +2 -0
- package/dist/core/intentRouterKeywordContext.js.map +1 -0
- package/dist/core/intentRouterKeywordEarlyGuards.d.ts +2 -0
- package/dist/core/intentRouterKeywordEarlyGuards.js +127 -0
- package/dist/core/intentRouterKeywordEarlyGuards.js.map +1 -0
- package/dist/core/intentRouterKeywordMatches.d.ts +3 -0
- package/dist/core/intentRouterKeywordMatches.js +31 -0
- package/dist/core/intentRouterKeywordMatches.js.map +1 -0
- package/dist/core/intentRouterKeywordSearchGuards.d.ts +2 -0
- package/dist/core/intentRouterKeywordSearchGuards.js +239 -0
- package/dist/core/intentRouterKeywordSearchGuards.js.map +1 -0
- package/dist/core/intentRouterKeywordTargetGuards.d.ts +2 -0
- package/dist/core/intentRouterKeywordTargetGuards.js +191 -0
- package/dist/core/intentRouterKeywordTargetGuards.js.map +1 -0
- package/dist/core/intentRouterKeywordToolGuards.d.ts +2 -0
- package/dist/core/intentRouterKeywordToolGuards.js +133 -0
- package/dist/core/intentRouterKeywordToolGuards.js.map +1 -0
- package/dist/core/intentRouterKeywordWeights.d.ts +4 -0
- package/dist/core/intentRouterKeywordWeights.js +1184 -0
- package/dist/core/intentRouterKeywordWeights.js.map +1 -0
- package/dist/core/intentRouterPlanningSignals.d.ts +7 -0
- package/dist/core/intentRouterPlanningSignals.js +268 -0
- package/dist/core/intentRouterPlanningSignals.js.map +1 -0
- package/dist/core/intentRouterPrDiffSignals.d.ts +1 -0
- package/dist/core/intentRouterPrDiffSignals.js +41 -0
- package/dist/core/intentRouterPrDiffSignals.js.map +1 -0
- package/dist/core/intentRouterPreflightSignals.d.ts +3 -0
- package/dist/core/intentRouterPreflightSignals.js +54 -0
- package/dist/core/intentRouterPreflightSignals.js.map +1 -0
- package/dist/core/intentRouterRegressionKeywordMatches.d.ts +1 -0
- package/dist/core/intentRouterRegressionKeywordMatches.js +176 -0
- package/dist/core/intentRouterRegressionKeywordMatches.js.map +1 -0
- package/dist/core/intentRouterRegressionSignals.d.ts +10 -0
- package/dist/core/intentRouterRegressionSignals.js +207 -0
- package/dist/core/intentRouterRegressionSignals.js.map +1 -0
- package/dist/core/intentRouterReleaseSignals.d.ts +8 -0
- package/dist/core/intentRouterReleaseSignals.js +59 -0
- package/dist/core/intentRouterReleaseSignals.js.map +1 -0
- package/dist/core/intentRouterRepoSignals.d.ts +8 -0
- package/dist/core/intentRouterRepoSignals.js +226 -0
- package/dist/core/intentRouterRepoSignals.js.map +1 -0
- package/dist/core/intentRouterReviewSignals.d.ts +2 -0
- package/dist/core/intentRouterReviewSignals.js +109 -0
- package/dist/core/intentRouterReviewSignals.js.map +1 -0
- package/dist/core/intentRouterRiskSignals.d.ts +12 -0
- package/dist/core/intentRouterRiskSignals.js +242 -0
- package/dist/core/intentRouterRiskSignals.js.map +1 -0
- package/dist/core/intentRouterScoring.d.ts +9 -0
- package/dist/core/intentRouterScoring.js +40 -0
- package/dist/core/intentRouterScoring.js.map +1 -0
- package/dist/core/intentRouterSearchApiSignals.d.ts +1 -0
- package/dist/core/intentRouterSearchApiSignals.js +62 -0
- package/dist/core/intentRouterSearchApiSignals.js.map +1 -0
- package/dist/core/intentRouterSearchBackgroundSignals.d.ts +1 -0
- package/dist/core/intentRouterSearchBackgroundSignals.js +55 -0
- package/dist/core/intentRouterSearchBackgroundSignals.js.map +1 -0
- package/dist/core/intentRouterSearchCommunicationSignals.d.ts +1 -0
- package/dist/core/intentRouterSearchCommunicationSignals.js +74 -0
- package/dist/core/intentRouterSearchCommunicationSignals.js.map +1 -0
- package/dist/core/intentRouterSearchDataSignals.d.ts +2 -0
- package/dist/core/intentRouterSearchDataSignals.js +98 -0
- package/dist/core/intentRouterSearchDataSignals.js.map +1 -0
- package/dist/core/intentRouterSearchDomainSignals.d.ts +1 -0
- package/dist/core/intentRouterSearchDomainSignals.js +71 -0
- package/dist/core/intentRouterSearchDomainSignals.js.map +1 -0
- package/dist/core/intentRouterSearchInfraSignals.d.ts +1 -0
- package/dist/core/intentRouterSearchInfraSignals.js +79 -0
- package/dist/core/intentRouterSearchInfraSignals.js.map +1 -0
- package/dist/core/intentRouterSearchIntegrationSignals.d.ts +1 -0
- package/dist/core/intentRouterSearchIntegrationSignals.js +117 -0
- package/dist/core/intentRouterSearchIntegrationSignals.js.map +1 -0
- package/dist/core/intentRouterSearchLookupSignals.d.ts +10 -0
- package/dist/core/intentRouterSearchLookupSignals.js +310 -0
- package/dist/core/intentRouterSearchLookupSignals.js.map +1 -0
- package/dist/core/intentRouterSearchNavigationSignals.d.ts +1 -0
- package/dist/core/intentRouterSearchNavigationSignals.js +62 -0
- package/dist/core/intentRouterSearchNavigationSignals.js.map +1 -0
- package/dist/core/intentRouterSearchOwnershipSignals.d.ts +1 -0
- package/dist/core/intentRouterSearchOwnershipSignals.js +15 -0
- package/dist/core/intentRouterSearchOwnershipSignals.js.map +1 -0
- package/dist/core/intentRouterSearchPageSignals.d.ts +1 -0
- package/dist/core/intentRouterSearchPageSignals.js +84 -0
- package/dist/core/intentRouterSearchPageSignals.js.map +1 -0
- package/dist/core/intentRouterSearchReliabilitySignals.d.ts +1 -0
- package/dist/core/intentRouterSearchReliabilitySignals.js +94 -0
- package/dist/core/intentRouterSearchReliabilitySignals.js.map +1 -0
- package/dist/core/intentRouterSearchStateSignals.d.ts +1 -0
- package/dist/core/intentRouterSearchStateSignals.js +107 -0
- package/dist/core/intentRouterSearchStateSignals.js.map +1 -0
- package/dist/core/intentRouterSearchStyleSignals.d.ts +1 -0
- package/dist/core/intentRouterSearchStyleSignals.js +99 -0
- package/dist/core/intentRouterSearchStyleSignals.js.map +1 -0
- package/dist/core/intentRouterSearchTestSignals.d.ts +1 -0
- package/dist/core/intentRouterSearchTestSignals.js +34 -0
- package/dist/core/intentRouterSearchTestSignals.js.map +1 -0
- package/dist/core/intentRouterSearchToolingSignals.d.ts +1 -0
- package/dist/core/intentRouterSearchToolingSignals.js +106 -0
- package/dist/core/intentRouterSearchToolingSignals.js.map +1 -0
- package/dist/core/intentRouterSearchUiSignals.d.ts +1 -0
- package/dist/core/intentRouterSearchUiSignals.js +77 -0
- package/dist/core/intentRouterSearchUiSignals.js.map +1 -0
- package/dist/core/intentRouterSecuritySignals.d.ts +4 -0
- package/dist/core/intentRouterSecuritySignals.js +235 -0
- package/dist/core/intentRouterSecuritySignals.js.map +1 -0
- package/dist/core/intentRouterTargetSignals.d.ts +5 -0
- package/dist/core/intentRouterTargetSignals.js +76 -0
- package/dist/core/intentRouterTargetSignals.js.map +1 -0
- package/dist/core/intentRouterTokens.d.ts +1 -0
- package/dist/core/intentRouterTokens.js +36 -0
- package/dist/core/intentRouterTokens.js.map +1 -0
- package/dist/core/intentRouterUnderstandSignals.d.ts +1 -0
- package/dist/core/intentRouterUnderstandSignals.js +171 -0
- package/dist/core/intentRouterUnderstandSignals.js.map +1 -0
- package/dist/core/intentRouterVerificationSignals.d.ts +8 -0
- package/dist/core/intentRouterVerificationSignals.js +119 -0
- package/dist/core/intentRouterVerificationSignals.js.map +1 -0
- package/dist/core/intentRouterWorkSignals.d.ts +4 -0
- package/dist/core/intentRouterWorkSignals.js +157 -0
- package/dist/core/intentRouterWorkSignals.js.map +1 -0
- package/dist/core/languages/pythonLockfiles.d.ts +11 -0
- package/dist/core/languages/pythonLockfiles.js +206 -0
- package/dist/core/languages/pythonLockfiles.js.map +1 -0
- package/dist/core/languages/pythonManifestText.d.ts +7 -0
- package/dist/core/languages/pythonManifestText.js +25 -0
- package/dist/core/languages/pythonManifestText.js.map +1 -0
- package/dist/core/languages/pythonManifests.d.ts +6 -27
- package/dist/core/languages/pythonManifests.js +29 -303
- package/dist/core/languages/pythonManifests.js.map +1 -1
- package/dist/core/languages/pythonPep508.d.ts +4 -0
- package/dist/core/languages/pythonPep508.js +14 -0
- package/dist/core/languages/pythonPep508.js.map +1 -0
- package/dist/core/languages/pythonProjectEvidence.d.ts +2 -0
- package/dist/core/languages/pythonProjectEvidence.js +29 -0
- package/dist/core/languages/pythonProjectEvidence.js.map +1 -0
- package/dist/core/languages/pythonProjectTypes.d.ts +31 -0
- package/dist/core/languages/pythonProjectTypes.js +2 -0
- package/dist/core/languages/pythonProjectTypes.js.map +1 -0
- package/dist/core/languages/pythonPyproject.d.ts +2 -0
- package/dist/core/languages/pythonPyproject.js +160 -0
- package/dist/core/languages/pythonPyproject.js.map +1 -0
- package/dist/core/languages/pythonRequirements.d.ts +9 -0
- package/dist/core/languages/pythonRequirements.js +86 -0
- package/dist/core/languages/pythonRequirements.js.map +1 -0
- package/dist/core/languages/pythonRoots.d.ts +3 -0
- package/dist/core/languages/pythonRoots.js +83 -0
- package/dist/core/languages/pythonRoots.js.map +1 -0
- package/dist/core/languages/pythonSetuptools.d.ts +6 -0
- package/dist/core/languages/pythonSetuptools.js +58 -0
- package/dist/core/languages/pythonSetuptools.js.map +1 -0
- package/dist/core/prDiff.js +12 -0
- package/dist/core/prDiff.js.map +1 -1
- package/dist/core/preflight.d.ts +3 -3
- package/dist/core/preflight.js +28 -542
- package/dist/core/preflight.js.map +1 -1
- package/dist/core/preflightChangedFileReasons.d.ts +14 -0
- package/dist/core/preflightChangedFileReasons.js +75 -0
- package/dist/core/preflightChangedFileReasons.js.map +1 -0
- package/dist/core/preflightChangedFiles.d.ts +9 -0
- package/dist/core/preflightChangedFiles.js +34 -0
- package/dist/core/preflightChangedFiles.js.map +1 -0
- package/dist/core/preflightContextReasons.d.ts +17 -0
- package/dist/core/preflightContextReasons.js +73 -0
- package/dist/core/preflightContextReasons.js.map +1 -0
- package/dist/core/preflightEvidence.d.ts +34 -0
- package/dist/core/preflightEvidence.js +119 -0
- package/dist/core/preflightEvidence.js.map +1 -0
- package/dist/core/preflightInputs.d.ts +15 -0
- package/dist/core/preflightInputs.js +31 -0
- package/dist/core/preflightInputs.js.map +1 -0
- package/dist/core/preflightIssueReasons.d.ts +2 -0
- package/dist/core/preflightIssueReasons.js +39 -0
- package/dist/core/preflightIssueReasons.js.map +1 -0
- package/dist/core/preflightLocalEvidence.d.ts +12 -0
- package/dist/core/preflightLocalEvidence.js +36 -0
- package/dist/core/preflightLocalEvidence.js.map +1 -0
- package/dist/core/preflightReleaseScale.d.ts +28 -0
- package/dist/core/preflightReleaseScale.js +95 -0
- package/dist/core/preflightReleaseScale.js.map +1 -0
- package/dist/core/preflightRequiredChecks.d.ts +26 -0
- package/dist/core/preflightRequiredChecks.js +96 -0
- package/dist/core/preflightRequiredChecks.js.map +1 -0
- package/dist/core/preflightReviewEvidence.d.ts +16 -0
- package/dist/core/preflightReviewEvidence.js +31 -0
- package/dist/core/preflightReviewEvidence.js.map +1 -0
- package/dist/core/preflightReviewReasons.d.ts +15 -0
- package/dist/core/preflightReviewReasons.js +76 -0
- package/dist/core/preflightReviewReasons.js.map +1 -0
- package/dist/core/preflightSuggestedActions.d.ts +15 -0
- package/dist/core/preflightSuggestedActions.js +84 -0
- package/dist/core/preflightSuggestedActions.js.map +1 -0
- package/dist/core/preflightTruncation.d.ts +6 -0
- package/dist/core/preflightTruncation.js +7 -0
- package/dist/core/preflightTruncation.js.map +1 -0
- package/dist/core/preflightVerdict.d.ts +3 -0
- package/dist/core/preflightVerdict.js +17 -0
- package/dist/core/preflightVerdict.js.map +1 -0
- package/dist/core/releaseEvidence.d.ts +4 -3
- package/dist/core/releaseEvidence.js +12 -263
- package/dist/core/releaseEvidence.js.map +1 -1
- package/dist/core/releaseEvidenceBaseline.d.ts +2 -0
- package/dist/core/releaseEvidenceBaseline.js +28 -0
- package/dist/core/releaseEvidenceBaseline.js.map +1 -0
- package/dist/core/releaseEvidencePrSummary.d.ts +13 -0
- package/dist/core/releaseEvidencePrSummary.js +240 -0
- package/dist/core/releaseEvidencePrSummary.js.map +1 -0
- package/dist/core/releaseTrain.js +3 -317
- package/dist/core/releaseTrain.js.map +1 -1
- package/dist/core/releaseTrainFallbacks.d.ts +3 -0
- package/dist/core/releaseTrainFallbacks.js +318 -0
- package/dist/core/releaseTrainFallbacks.js.map +1 -0
- package/dist/core/reportScope.d.ts +24 -0
- package/dist/core/reportScope.js +234 -0
- package/dist/core/reportScope.js.map +1 -0
- package/dist/core/review.d.ts +2 -25
- package/dist/core/review.js +34 -1034
- package/dist/core/review.js.map +1 -1
- package/dist/core/reviewBaseSnapshot.d.ts +14 -0
- package/dist/core/reviewBaseSnapshot.js +41 -0
- package/dist/core/reviewBaseSnapshot.js.map +1 -0
- package/dist/core/reviewChangedFiles.d.ts +8 -0
- package/dist/core/reviewChangedFiles.js +63 -0
- package/dist/core/reviewChangedFiles.js.map +1 -0
- package/dist/core/reviewContractChanges.d.ts +5 -0
- package/dist/core/reviewContractChanges.js +114 -0
- package/dist/core/reviewContractChanges.js.map +1 -0
- package/dist/core/reviewCycles.d.ts +7 -0
- package/dist/core/reviewCycles.js +53 -0
- package/dist/core/reviewCycles.js.map +1 -0
- package/dist/core/reviewFindings.d.ts +17 -0
- package/dist/core/reviewFindings.js +49 -0
- package/dist/core/reviewFindings.js.map +1 -0
- package/dist/core/reviewFlowDiffs.d.ts +4 -0
- package/dist/core/reviewFlowDiffs.js +99 -0
- package/dist/core/reviewFlowDiffs.js.map +1 -0
- package/dist/core/reviewGit.d.ts +7 -0
- package/dist/core/reviewGit.js +45 -0
- package/dist/core/reviewGit.js.map +1 -0
- package/dist/core/reviewGraphEvidence.d.ts +3 -0
- package/dist/core/reviewGraphEvidence.js +55 -0
- package/dist/core/reviewGraphEvidence.js.map +1 -0
- package/dist/core/reviewHeadSnapshot.d.ts +8 -0
- package/dist/core/reviewHeadSnapshot.js +15 -0
- package/dist/core/reviewHeadSnapshot.js.map +1 -0
- package/dist/core/reviewIntent.d.ts +2 -0
- package/dist/core/reviewIntent.js +18 -0
- package/dist/core/reviewIntent.js.map +1 -0
- package/dist/core/reviewManifests.d.ts +12 -0
- package/dist/core/reviewManifests.js +124 -0
- package/dist/core/reviewManifests.js.map +1 -0
- package/dist/core/reviewNoChanges.d.ts +9 -0
- package/dist/core/reviewNoChanges.js +26 -0
- package/dist/core/reviewNoChanges.js.map +1 -0
- package/dist/core/reviewPackageScope.d.ts +4 -0
- package/dist/core/reviewPackageScope.js +24 -0
- package/dist/core/reviewPackageScope.js.map +1 -0
- package/dist/core/reviewRefs.d.ts +4 -0
- package/dist/core/reviewRefs.js +65 -0
- package/dist/core/reviewRefs.js.map +1 -0
- package/dist/core/reviewRiskyFunctions.d.ts +8 -0
- package/dist/core/reviewRiskyFunctions.js +83 -0
- package/dist/core/reviewRiskyFunctions.js.map +1 -0
- package/dist/core/reviewState.d.ts +21 -0
- package/dist/core/reviewState.js +96 -0
- package/dist/core/reviewState.js.map +1 -0
- package/dist/core/reviewTier.d.ts +18 -0
- package/dist/core/reviewTier.js +99 -0
- package/dist/core/reviewTier.js.map +1 -0
- package/dist/core/reviewVerdict.d.ts +9 -0
- package/dist/core/reviewVerdict.js +121 -0
- package/dist/core/reviewVerdict.js.map +1 -0
- package/dist/core/roadmapCatalog.d.ts +1 -0
- package/dist/core/roadmapCatalog.js +227 -7
- package/dist/core/roadmapCatalog.js.map +1 -1
- package/dist/core/start.d.ts +1 -1
- package/dist/core/start.js +26 -63
- package/dist/core/start.js.map +1 -1
- package/dist/core/startAdoptionGaps.d.ts +3 -0
- package/dist/core/startAdoptionGaps.js +12 -0
- package/dist/core/startAdoptionGaps.js.map +1 -0
- package/dist/core/startInputs.d.ts +31 -0
- package/dist/core/startInputs.js +27 -0
- package/dist/core/startInputs.js.map +1 -0
- package/dist/core/startMode.js +7 -1
- package/dist/core/startMode.js.map +1 -1
- package/dist/core/startNextActions.d.ts +13 -0
- package/dist/core/startNextActions.js +19 -0
- package/dist/core/startNextActions.js.map +1 -0
- package/dist/core/startReportBuilder.d.ts +25 -0
- package/dist/core/startReportBuilder.js +44 -0
- package/dist/core/startReportBuilder.js.map +1 -0
- package/dist/core/taint.js +14 -125
- package/dist/core/taint.js.map +1 -1
- package/dist/core/taintMatching.d.ts +11 -0
- package/dist/core/taintMatching.js +126 -0
- package/dist/core/taintMatching.js.map +1 -0
- package/dist/core/upgradePreview.d.ts +1 -12
- package/dist/core/upgradePreview.js +12 -160
- package/dist/core/upgradePreview.js.map +1 -1
- package/dist/core/upgradePreviewNpmEvidence.d.ts +19 -0
- package/dist/core/upgradePreviewNpmEvidence.js +164 -0
- package/dist/core/upgradePreviewNpmEvidence.js.map +1 -0
- package/dist/core/upgradePreviewPython.d.ts +2 -0
- package/dist/core/upgradePreviewPython.js +71 -0
- package/dist/core/upgradePreviewPython.js.map +1 -0
- package/dist/index.d.ts +6 -12
- package/dist/index.js +2 -3
- package/dist/index.js.map +1 -1
- package/dist/mcp/server.d.ts +3 -24
- package/dist/mcp/server.js +32 -414
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/serverContext.d.ts +6 -0
- package/dist/mcp/serverContext.js +55 -0
- package/dist/mcp/serverContext.js.map +1 -0
- package/dist/mcp/serverDispatch.d.ts +39 -0
- package/dist/mcp/serverDispatch.js +74 -0
- package/dist/mcp/serverDispatch.js.map +1 -0
- package/dist/mcp/serverHandlers.d.ts +15 -0
- package/dist/mcp/serverHandlers.js +94 -0
- package/dist/mcp/serverHandlers.js.map +1 -0
- package/dist/mcp/serverLifecycle.d.ts +14 -0
- package/dist/mcp/serverLifecycle.js +65 -0
- package/dist/mcp/serverLifecycle.js.map +1 -0
- package/dist/mcp/serverMessage.d.ts +11 -0
- package/dist/mcp/serverMessage.js +37 -0
- package/dist/mcp/serverMessage.js.map +1 -0
- package/dist/mcp/serverSession.d.ts +6 -0
- package/dist/mcp/serverSession.js +77 -0
- package/dist/mcp/serverSession.js.map +1 -0
- package/dist/mcp/serverStdio.d.ts +7 -0
- package/dist/mcp/serverStdio.js +34 -0
- package/dist/mcp/serverStdio.js.map +1 -0
- package/dist/mcp/serverTypes.d.ts +18 -0
- package/dist/mcp/serverTypes.js +2 -0
- package/dist/mcp/serverTypes.js.map +1 -0
- package/dist/mcp/serverVersion.d.ts +1 -0
- package/dist/mcp/serverVersion.js +17 -0
- package/dist/mcp/serverVersion.js.map +1 -0
- package/dist/mcp/toolCatalog.d.ts +2 -0
- package/dist/mcp/toolCatalog.js +93 -0
- package/dist/mcp/toolCatalog.js.map +1 -0
- package/dist/mcp/tools/upgrade.d.ts +1 -1
- package/dist/mcp/tools/upgrade.js +2 -16
- package/dist/mcp/tools/upgrade.js.map +1 -1
- package/dist/mcp/tools.d.ts +2 -3
- package/dist/mcp/tools.js +5 -97
- package/dist/mcp/tools.js.map +1 -1
- package/dist/projscan-sbom.cdx.json +6 -6
- package/dist/reporters/consoleUpgradeReporter.js +24 -2
- package/dist/reporters/consoleUpgradeReporter.js.map +1 -1
- package/dist/reporters/htmlReporter.d.ts +3 -2
- package/dist/reporters/htmlReporter.js +14 -2
- package/dist/reporters/htmlReporter.js.map +1 -1
- package/dist/reporters/jsonReporter.d.ts +4 -3
- package/dist/reporters/jsonReporter.js +9 -4
- package/dist/reporters/jsonReporter.js.map +1 -1
- package/dist/reporters/markdownAnalysisReporter.d.ts +2 -1
- package/dist/reporters/markdownAnalysisReporter.js +8 -1
- package/dist/reporters/markdownAnalysisReporter.js.map +1 -1
- package/dist/reporters/markdownArchitectureReporter.d.ts +3 -0
- package/dist/reporters/markdownArchitectureReporter.js +33 -0
- package/dist/reporters/markdownArchitectureReporter.js.map +1 -0
- package/dist/reporters/markdownCouplingReporter.d.ts +2 -0
- package/dist/reporters/markdownCouplingReporter.js +43 -0
- package/dist/reporters/markdownCouplingReporter.js.map +1 -0
- package/dist/reporters/markdownCoverageReporter.d.ts +2 -0
- package/dist/reporters/markdownCoverageReporter.js +40 -0
- package/dist/reporters/markdownCoverageReporter.js.map +1 -0
- package/dist/reporters/markdownExplanationReporter.d.ts +2 -0
- package/dist/reporters/markdownExplanationReporter.js +37 -0
- package/dist/reporters/markdownExplanationReporter.js.map +1 -0
- package/dist/reporters/markdownHealthReporter.d.ts +4 -0
- package/dist/reporters/markdownHealthReporter.js +66 -0
- package/dist/reporters/markdownHealthReporter.js.map +1 -0
- package/dist/reporters/markdownHotspotReporter.d.ts +2 -0
- package/dist/reporters/markdownHotspotReporter.js +36 -0
- package/dist/reporters/markdownHotspotReporter.js.map +1 -0
- package/dist/reporters/markdownOutdatedReporter.d.ts +2 -0
- package/dist/reporters/markdownOutdatedReporter.js +31 -0
- package/dist/reporters/markdownOutdatedReporter.js.map +1 -0
- package/dist/reporters/markdownPrDiffReporter.d.ts +2 -0
- package/dist/reporters/markdownPrDiffReporter.js +63 -0
- package/dist/reporters/markdownPrDiffReporter.js.map +1 -0
- package/dist/reporters/markdownReporter.d.ts +9 -12
- package/dist/reporters/markdownReporter.js +9 -288
- package/dist/reporters/markdownReporter.js.map +1 -1
- package/dist/reporters/markdownUpgradeReporter.js +19 -4
- package/dist/reporters/markdownUpgradeReporter.js.map +1 -1
- package/dist/reporters/markdownWorkspaceReporter.d.ts +2 -0
- package/dist/reporters/markdownWorkspaceReporter.js +25 -0
- package/dist/reporters/markdownWorkspaceReporter.js.map +1 -0
- package/dist/reporters/sarifReporter.d.ts +6 -4
- package/dist/reporters/sarifReporter.js +8 -7
- package/dist/reporters/sarifReporter.js.map +1 -1
- package/dist/tool-manifest.json +4 -4
- package/dist/types/config.d.ts +10 -0
- package/dist/types/dependencyHealth.d.ts +12 -0
- package/dist/types.d.ts +34 -34
- package/dist/utils/config.d.ts +2 -8
- package/dist/utils/config.js +14 -180
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/configBasics.d.ts +5 -0
- package/dist/utils/configBasics.js +21 -0
- package/dist/utils/configBasics.js.map +1 -0
- package/dist/utils/configHotspots.d.ts +2 -0
- package/dist/utils/configHotspots.js +15 -0
- package/dist/utils/configHotspots.js.map +1 -0
- package/dist/utils/configIssueRules.d.ts +8 -0
- package/dist/utils/configIssueRules.js +24 -0
- package/dist/utils/configIssueRules.js.map +1 -0
- package/dist/utils/configMonorepo.d.ts +2 -0
- package/dist/utils/configMonorepo.js +38 -0
- package/dist/utils/configMonorepo.js.map +1 -0
- package/dist/utils/configReportPolicies.d.ts +2 -0
- package/dist/utils/configReportPolicies.js +32 -0
- package/dist/utils/configReportPolicies.js.map +1 -0
- package/dist/utils/configScan.d.ts +2 -0
- package/dist/utils/configScan.js +15 -0
- package/dist/utils/configScan.js.map +1 -0
- package/dist/utils/configSeverity.d.ts +2 -0
- package/dist/utils/configSeverity.js +15 -0
- package/dist/utils/configSeverity.js.map +1 -0
- package/dist/utils/configSources.d.ts +5 -0
- package/dist/utils/configSources.js +55 -0
- package/dist/utils/configSources.js.map +1 -0
- package/dist/utils/configTaint.d.ts +2 -0
- package/dist/utils/configTaint.js +15 -0
- package/dist/utils/configTaint.js.map +1 -0
- package/docs/GUIDE.md +39 -4
- package/docs/ROADMAP.md +54 -21
- package/docs/examples/adoption-workflows.md +128 -0
- package/docs/examples/swarm-coordination.md +120 -0
- package/package.json +3 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configSources.js","sourceRoot":"","sources":["../../src/utils/configSources.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,iBAAiB,GAAG,CAAC,kBAAkB,EAAE,aAAa,CAAC,CAAC;AAC9D,MAAM,OAAO,GAAG,UAAU,CAAC;AAO3B,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,QAAgB,EAChB,YAAqB;IAErB,IAAI,YAAY;QAAE,OAAO,MAAM,wBAAwB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAEhF,MAAM,eAAe,GAAG,MAAM,yBAAyB,CAAC,QAAQ,CAAC,CAAC;IAClE,IAAI,eAAe;QAAE,OAAO,eAAe,CAAC;IAE5C,OAAO,MAAM,uBAAuB,CAAC,QAAQ,CAAC,CAAC;AACjD,CAAC;AAED,KAAK,UAAU,wBAAwB,CACrC,QAAgB,EAChB,YAAoB;IAEpB,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAClG,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AAChG,CAAC;AAED,KAAK,UAAU,yBAAyB,CAAC,QAAgB;IACvD,KAAK,MAAM,IAAI,IAAI,iBAAiB,EAAE,CAAC;QACrC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC5C,IAAI,GAAW,CAAC;QAChB,IAAI,CAAC;YACH,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC9C,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IACjE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,uBAAuB,CAAC,QAAgB;IACrD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;IACpD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAChD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA4B,CAAC;QACvD,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;QAC9B,IAAI,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC7C,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,IAAI,OAAO,EAAE,EAAE,CAAC;QAC9D,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,SAAS,CAAC,GAAW,EAAE,QAAgB;IAC9C,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,MAAM,IAAI,KAAK,CAAC,mBAAmB,QAAQ,KAAK,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IACzE,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export function applyTaint(obj, out) {
|
|
2
|
+
if (!obj.taint || typeof obj.taint !== 'object')
|
|
3
|
+
return;
|
|
4
|
+
const t = obj.taint;
|
|
5
|
+
const taint = {};
|
|
6
|
+
if (Array.isArray(t.sources)) {
|
|
7
|
+
taint.sources = t.sources.filter((v) => typeof v === 'string' && v.length > 0);
|
|
8
|
+
}
|
|
9
|
+
if (Array.isArray(t.sinks)) {
|
|
10
|
+
taint.sinks = t.sinks.filter((v) => typeof v === 'string' && v.length > 0);
|
|
11
|
+
}
|
|
12
|
+
if (Object.keys(taint).length)
|
|
13
|
+
out.taint = taint;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=configTaint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configTaint.js","sourceRoot":"","sources":["../../src/utils/configTaint.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,UAAU,CAAC,GAA4B,EAAE,GAAmB;IAC1E,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ;QAAE,OAAO;IACxD,MAAM,CAAC,GAAG,GAAG,CAAC,KAAgC,CAAC;IAC/C,MAAM,KAAK,GAAyC,EAAE,CAAC;IACvD,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7B,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC9F,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC1F,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM;QAAE,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC;AACnD,CAAC"}
|
package/docs/GUIDE.md
CHANGED
|
@@ -187,7 +187,7 @@ When the agent first opens a repo, or before starting a refactor, the question i
|
|
|
187
187
|
For branch-diff, PR-size, and commit-message questions, such as `projscan start --intent "what did I change since main?"`, `projscan start --intent "is this PR too large?"`, `projscan start --intent "how big is this change?"`, `projscan start --intent "write a commit message for these changes"`, or `projscan start --intent "summarize my changes for a commit"`, it routes to `projscan_pr_diff` so changed exports, imports, call sites, complexity, and fan-in are reviewed before full review.
|
|
188
188
|
For branch freshness and comparison questions, such as `projscan start --intent "is my branch stale?"` or `projscan start --intent "compare my branch with main"`, it also routes to `projscan_pr_diff` so the developer checks the structural diff before rebasing or asking for review. For rebase and merge-conflict recovery, such as `projscan start --intent "rebase went wrong"` or `projscan start --intent "resolve merge conflicts"`, it routes to `projscan_preflight --mode before_merge`; post-conflict test-plan wording such as `projscan start --intent "what should I test after resolving conflicts?"` stays on `projscan_regression_plan`.
|
|
189
189
|
For resume questions, such as `projscan start --intent "where did I leave off?"`, `projscan start --intent "what changed while I was away?"`, `projscan start --intent "what changed while I was offline?"`, `projscan start --intent "what changed while I was asleep?"`, `projscan start --intent "what did the last agent touch?"`, or `projscan start --intent "what did the last agent do?"`, it routes to `projscan_session { action: "touched" }` so remembered touched files are reviewed before live preflight evidence gates the next edit.
|
|
190
|
-
For parallel-agent coordination questions, such as `projscan start --intent "show coordination status for parallel agents"`, `projscan start --intent "who else is working on this?"`, `projscan start --intent "am I going to collide with another agent?"`, or `projscan start --intent "what worktrees are active?"`, it routes to `projscan_coordinate` so collisions, claims,
|
|
190
|
+
For parallel-agent coordination questions, such as `projscan start --intent "show coordination status for parallel agents"`, `projscan start --intent "who else is working on this?"`, `projscan start --intent "am I going to collide with another agent?"`, or `projscan start --intent "what worktrees are active?"`, it routes to `projscan_coordinate` so collisions, claims, merge order, and the current-worktree-versus-remembered-session evidence boundary are reviewed through one readiness verdict before editing continues. For merge-order wording, such as `projscan start --intent "what should merge first?"`, it routes to `projscan_merge_risk`; for overlap wording, such as `projscan start --intent "show me overlapping changes"`, it routes to `projscan_collision`.
|
|
191
191
|
For active-claim questions, such as `projscan start --intent "show active claims"`, it routes to `projscan_claim { action: "list" }` so owners, leases, and contention warnings are reviewed before parallel work continues.
|
|
192
192
|
For file-claim requests, such as `projscan start --intent "claim src/core/start.ts for me"`, it routes to `projscan_claim`, lists active claims first, then adds the requested target only after a real agent name replaces `Needs Input`.
|
|
193
193
|
For architecture-coupling questions, such as `projscan start --intent "show circular dependencies"` or `projscan start --intent "find dependency cycles"`, it routes to `projscan_coupling` with `direction: "cycles_only"` / `projscan coupling --cycles-only --format json`; broader wording such as `projscan start --intent "what modules are tightly coupled"` routes to the full fan-in, fan-out, instability, cross-package-edge, and cycle report.
|
|
@@ -204,7 +204,7 @@ When the agent first opens a repo, or before starting a refactor, the question i
|
|
|
204
204
|
- **`projscan_preflight` / `projscan preflight`** — agent safety gate. Returns `proceed`, `caution`, or `block` with health, changed-file, review, remembered session, hotspot, plugin-policy, supply-chain, and release-scale evidence. `evidence.riskSources.currentWorktree` is current Git/worktree evidence; `evidence.riskSources.sessionMemory` is remembered handoff context. Use `--mode before_edit` at the start of work and `--mode before_commit` / `--mode before_merge` before handing off or merging; scale-only commit blocks are cautions, while merge gates still require manual release sign-off.
|
|
205
205
|
- **`projscan_hotspots` / `projscan hotspots`** — files ranked by `git churn × AST cyclomatic complexity × open issues × ownership × coverage`. Pass `view: "functions"` for top-N risky individual functions across the repo (0.13+).
|
|
206
206
|
- **`projscan_semantic_graph` / `projscan semantic-graph`** — stable v3 graph contract with file, function, package, and symbol nodes plus imports, exports, definitions, and calls edges. Use it when an agent needs one normalized graph shape instead of several targeted queries.
|
|
207
|
-
- **`projscan_dataflow` / `projscan dataflow`** — direct, propagated, and bridge source-to-sink dataflow risks. Use it for a focused safety pass before touching command execution, raw SQL, filesystem writes, or DOM sinks.
|
|
207
|
+
- **`projscan_dataflow` / `projscan dataflow`** — direct, propagated, and bridge source-to-sink dataflow risks, including framework-aware Next.js route request body and URL sources. Use it for a focused safety pass before touching command execution, raw SQL, filesystem writes, or DOM sinks.
|
|
208
208
|
- **`projscan_coupling` / `projscan coupling`** — per-file fan-in / fan-out / instability plus circular-import cycles (Tarjan SCC). Use `direction: cycles_only` or `projscan coupling --cycles-only` to surface architectural debt directly.
|
|
209
209
|
- **`projscan_analyze` / `projscan analyze`** — the everything report; useful at session start but verbose.
|
|
210
210
|
|
|
@@ -434,6 +434,12 @@ graph. Bridge risks are graph-backed dataflow additions: a wrapper that calls a
|
|
|
434
434
|
and a sink wrapper is surfaced even when legacy taint reachability cannot see a
|
|
435
435
|
downstream call path from source to sink. By default, dataflow suppresses test-file paths,
|
|
436
436
|
broad readFile/writeFile-style noise, and JavaScript RegExp.exec false positives.
|
|
437
|
+
Framework request-source detection covers narrow tested patterns for Next.js, Hono,
|
|
438
|
+
Express, Fastify, and Koa handlers, including Hono validator output,
|
|
439
|
+
Express/Fastify/Koa request IP metadata, Fastify host/hostname and raw
|
|
440
|
+
URL/header evidence, and Express/Koa header accessors plus Express
|
|
441
|
+
`req.param(...)` and `req.originalUrl`, while
|
|
442
|
+
keeping lookalike helpers quiet.
|
|
437
443
|
|
|
438
444
|
For release hardening, `npm run check:graph-corpus` compares bundled fixture metrics against `docs/graph-corpus-baseline.json`. The gate fails only when graph coverage drops below the baseline or dataflow risks rise above it.
|
|
439
445
|
|
|
@@ -688,7 +694,7 @@ Each finding becomes a SARIF result with `ruleId: audit-<pkg>`, severity mapped
|
|
|
688
694
|
projscan upgrade <package>
|
|
689
695
|
```
|
|
690
696
|
|
|
691
|
-
Preview the impact of upgrading a package. The default path is fully offline; pass `--check-registry` when you explicitly want npm registry lookup for the current latest version.
|
|
697
|
+
Preview the impact of upgrading a package. The default path is fully offline; pass `--check-registry` when you explicitly want npm registry lookup for the current latest npm version.
|
|
692
698
|
|
|
693
699
|
**What you get:**
|
|
694
700
|
|
|
@@ -696,6 +702,8 @@ Preview the impact of upgrading a package. The default path is fully offline; pa
|
|
|
696
702
|
- Breaking-change markers found in the CHANGELOG: scans for `BREAKING CHANGE`, `deprecated`, `removed support`, `no longer supported`, and section headers containing "breaking"
|
|
697
703
|
- CHANGELOG excerpt sliced to the relevant version range (read from `node_modules/<pkg>/CHANGELOG.md`)
|
|
698
704
|
- Importer list - every file in your source tree that imports the package (direct or sub-path)
|
|
705
|
+
- Python manifest evidence for packages declared in `pyproject.toml` (including PEP 735 `dependency-groups`, Poetry dependency groups, and legacy `tool.poetry.dev-dependencies`), `setup.cfg`, `setup.py`, or root `requirements*.txt`. Root Python manifests are sufficient local evidence even before `.py` files exist.
|
|
706
|
+
- Python current-version evidence from `poetry.lock` / `uv.lock` / `pdm.lock` package blocks, `conda-lock.yml` / `conda-lock.yaml` package entries, `Pipfile.lock` exact versions, pinned root `requirements*.txt`, or pinned root `constraints*.txt` entries
|
|
699
707
|
|
|
700
708
|
**Example:**
|
|
701
709
|
|
|
@@ -717,6 +725,7 @@ $ projscan upgrade react --format markdown
|
|
|
717
725
|
|
|
718
726
|
- Reads the CHANGELOG that npm already placed in `node_modules/`. If the package author doesn't ship one, you'll see "No local CHANGELOG found."
|
|
719
727
|
- Without `--check-registry`, works with what's **installed** and reports `latestSource: "installed"`. With `--check-registry`, npm registry lookup is attempted and failures fall back to the installed version with `registryError`.
|
|
728
|
+
- Python previews stay offline. They do not query PyPI; current-version evidence comes from supported local lockfiles, pinned root requirements, or pinned root constraints.
|
|
720
729
|
|
|
721
730
|
### coverage
|
|
722
731
|
|
|
@@ -882,6 +891,8 @@ Machine-readable output. Useful for piping into other tools, storing results, or
|
|
|
882
891
|
```bash
|
|
883
892
|
projscan analyze --format json | jq '.issues[] | select(.severity == "error")'
|
|
884
893
|
projscan analyze --format json > analysis.json
|
|
894
|
+
projscan analyze --report-scope src/api --redact-paths --format json > scoped-analysis.json
|
|
895
|
+
projscan analyze --report-policy apiEvidence --format json > scoped-analysis.json
|
|
885
896
|
```
|
|
886
897
|
|
|
887
898
|
### Markdown
|
|
@@ -902,6 +913,10 @@ projscan doctor --format html > HEALTH.html
|
|
|
902
913
|
```
|
|
903
914
|
|
|
904
915
|
Supported on `analyze`, `doctor`, `hotspots`, `coupling`, `pr-diff`, `review`, `impact`, and `coverage`.
|
|
916
|
+
For `analyze` and `doctor`, scoped/redacted report controls also appear as a
|
|
917
|
+
path-safe controls card when active.
|
|
918
|
+
Path redaction keeps HTTP(S) documentation links readable while redacting
|
|
919
|
+
standalone file-like path tokens from issue text.
|
|
905
920
|
|
|
906
921
|
### SARIF
|
|
907
922
|
|
|
@@ -918,6 +933,15 @@ Supported on `analyze`, `audit`, `ci`, `doctor`, and `outdated`. Each issue is e
|
|
|
918
933
|
- `message.text` - the issue description
|
|
919
934
|
- `locations` - real file + line/column when the analyzer can supply them (security findings include line numbers); project-level issues anchor to repo root
|
|
920
935
|
- `properties.category` - the analyzer category (`security`, `formatting`, `architecture`, …)
|
|
936
|
+
|
|
937
|
+
For shareable evidence artifacts, `analyze`, `doctor`, and `ci` accept
|
|
938
|
+
`--report-policy <name>`, `--report-scope <paths>`, and `--redact-paths`. Scope
|
|
939
|
+
is comma-separated and repo-relative. Redaction replaces file paths with stable
|
|
940
|
+
labels while preserving correlation across issues and files in the same report,
|
|
941
|
+
including file-like path tokens in issue text that has no location anchor.
|
|
942
|
+
JSON/SARIF include path-safe `reportControls` metadata, and Markdown/HTML print
|
|
943
|
+
path-safe controls banners. Direct `--report-scope` and `--redact-paths` flags
|
|
944
|
+
override the selected preset for a single run.
|
|
921
945
|
- `properties.fixAvailable` - whether `projscan fix` can remediate it
|
|
922
946
|
|
|
923
947
|
When uploaded to GitHub Code Scanning, findings appear in the **Security → Code scanning** tab and (for PRs) as inline annotations on changed lines.
|
|
@@ -951,6 +975,12 @@ ProjScan loads a project-wide config from one of:
|
|
|
951
975
|
"severityOverrides": {
|
|
952
976
|
"missing-prettier": "info"
|
|
953
977
|
},
|
|
978
|
+
"reportPolicies": {
|
|
979
|
+
"apiEvidence": {
|
|
980
|
+
"reportScope": ["src/api", "packages/backend"],
|
|
981
|
+
"redactPaths": true
|
|
982
|
+
}
|
|
983
|
+
},
|
|
954
984
|
"hotspots": {
|
|
955
985
|
"limit": 20,
|
|
956
986
|
"since": "6 months ago"
|
|
@@ -970,6 +1000,7 @@ ProjScan loads a project-wide config from one of:
|
|
|
970
1000
|
| `scan.offline` | boolean | Block projscan network-capable features: telemetry sending, `audit`, registry checks, and optional semantic model loading. Default `false`. |
|
|
971
1001
|
| `disableRules` | string[] | Silence rules by id. Exact match (`missing-prettier`) or wildcard prefix (`large-*`). |
|
|
972
1002
|
| `severityOverrides` | `Record<string, 'info' \| 'warning' \| 'error'>` | Remap a rule's severity. Useful for downgrading project-specific false positives without disabling them. |
|
|
1003
|
+
| `reportPolicies` | `Record<string, { reportScope?: string[]; redactPaths?: boolean }>` | Named evidence export presets selected with `--report-policy <name>` on `analyze`, `doctor`, and `ci`. |
|
|
973
1004
|
| `hotspots.limit` | number (1–100) | Default limit for `projscan hotspots`. |
|
|
974
1005
|
| `hotspots.since` | string | Default git history window for `projscan hotspots`. |
|
|
975
1006
|
|
|
@@ -1059,6 +1090,9 @@ Example GitHub Actions snippet:
|
|
|
1059
1090
|
| `--offline` | Block projscan network-capable features for this run |
|
|
1060
1091
|
| `--changed-only` | Scope to files changed vs base ref (applies to `analyze`, `doctor`, `ci`) |
|
|
1061
1092
|
| `--base-ref <ref>` | Git base ref for `--changed-only` (default: origin/main) |
|
|
1093
|
+
| `--report-policy <name>` | Use a named report policy preset from config (`analyze`, `doctor`, `ci`) |
|
|
1094
|
+
| `--report-scope <paths>` | Comma-separated repo-relative paths to include in exported evidence (`analyze`, `doctor`, `ci`) |
|
|
1095
|
+
| `--redact-paths` | Replace file paths in exported evidence with stable labels (`analyze`, `doctor`, `ci`) |
|
|
1062
1096
|
| `--verbose` | Show debug-level logging - useful for diagnosing scan issues |
|
|
1063
1097
|
| `--quiet` | Suppress all non-essential output (spinners, status messages) |
|
|
1064
1098
|
| `-V, --version` | Print the version number |
|
|
@@ -1598,7 +1632,8 @@ src/
|
|
|
1598
1632
|
│ ├── markdownReporter.ts # Markdown output
|
|
1599
1633
|
│ └── sarifReporter.ts # SARIF 2.1.0 output
|
|
1600
1634
|
├── mcp/
|
|
1601
|
-
│ ├── server.ts # JSON-RPC
|
|
1635
|
+
│ ├── server.ts # MCP server factory and JSON-RPC request orchestration
|
|
1636
|
+
│ ├── serverStdio.ts # stdio transport loop for the CLI entry point
|
|
1602
1637
|
│ ├── tools.ts # 41 MCP tools (barrel; per-tool files under tools/)
|
|
1603
1638
|
│ ├── tokenBudget.ts # Record-aware response truncator
|
|
1604
1639
|
│ ├── pagination.ts # Cursor-based pagination (opaque base64 + checksum)
|
package/docs/ROADMAP.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# ProjScan Roadmap
|
|
2
2
|
|
|
3
|
-
Last reviewed 2026-06-
|
|
3
|
+
Last reviewed 2026-06-16.
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -44,7 +44,8 @@ Four plays, in order:
|
|
|
44
44
|
2. **Lean into multi-agent** — make projscan the _shared substrate_ for agent swarms. This is where the market is moving and where our context-budget design pays off. ✅ Largely shipped (1.4 Session, 1.5 Budgeted by default + Project Memory).
|
|
45
45
|
3. **Become the operator, not the advisor** — stop suggesting and start acting (cross-repo, apply, security gate). ✅ Shipped in the 1.6 arc.
|
|
46
46
|
4. **Expand the moat** — depth where it matters (CFG / dataflow on hot paths, more languages, sub-file embeddings, cost analytics, live PR review, plugin extensibility). Not everywhere; we're not trying to be Cody. ✅ The 1.7 → 2.0 arc turns this into a platform contract.
|
|
47
|
-
5. **Coordinate the swarm** —
|
|
47
|
+
5. **Coordinate the swarm** — collision detection, claims/leases, merge-risk preflight, intent routing, one-call coordination, and live coordinate watch shipped across the 3.6 through 3.7 arc, with the 4.0 tool-surface consolidation now complete. The next work is evidence: prove which commands agents reach for in real multi-worktree sessions, then deepen only the paths that prevent integration failures.
|
|
48
|
+
6. **Make agent proof release-ready** — 4.1 through 4.5 turned Mission Control into a goal → mission → proof → review harness and packaged the post-4.4 implementation train: current planning surfaces, adoption examples, precise framework dataflow, scoped/redacted evidence exports, Python upgrade previews, and hotspot maintainability cleanup.
|
|
48
49
|
|
|
49
50
|
We are _not_ trying to be:
|
|
50
51
|
|
|
@@ -55,29 +56,61 @@ We are _not_ trying to be:
|
|
|
55
56
|
|
|
56
57
|
## Now / Next / Later
|
|
57
58
|
|
|
58
|
-
### Now —
|
|
59
|
+
### Now — Post-4.5 Validation
|
|
59
60
|
|
|
60
|
-
|
|
61
|
+
4.5.0 "Review-Ready Intelligence Train" packages the post-4.4 implementation train. The next work is validation and selective hardening from real use, not another broad feature push.
|
|
61
62
|
|
|
62
|
-
|
|
63
|
+
The active validation lines are:
|
|
63
64
|
|
|
64
|
-
- **
|
|
65
|
-
-
|
|
65
|
+
- **Swarm coordination evidence.** Validate how real agents use `collisions`, `claim`, `merge-risk`, `coordinate`, and `coordinate --watch`; deepen only the coordination paths that prevent integration failures.
|
|
66
|
+
- **Evidence export adoption.** Prove scoped/redacted report controls work for partner, security, and release-review handoffs without leaking unnecessary repo structure.
|
|
67
|
+
- **Python upgrade coverage.** Extend lockfile support only after Poetry and pinned-requirement evidence prove useful in real repos.
|
|
68
|
+
- **Framework dataflow precision.** Add more framework patterns only when each has a narrow request source, sink, and false-positive fixture.
|
|
69
|
+
- **Hotspot maintainability.** Continue extracting and covering high-churn start/review/type surfaces when they show concrete review or defect risk.
|
|
66
70
|
|
|
67
|
-
Strictly **local-first** throughout: same-repo / same-machine
|
|
71
|
+
Strictly **local-first** throughout: same-repo / same-machine evidence, no daemon, no cloud, no hidden network calls, no new telemetry, and no secret-value reads.
|
|
68
72
|
|
|
69
|
-
Success signals:
|
|
73
|
+
Success signals: teams copy the adoption examples into real reviews, scoped/redacted artifacts are accepted by reviewers, Python upgrade previews identify useful local evidence, dataflow additions stay quiet on lookalikes, and release bug-hunts remain free of concrete defects.
|
|
70
74
|
|
|
71
|
-
### Recently Completed —
|
|
75
|
+
### Recently Completed — 4.5.0 (2026)
|
|
72
76
|
|
|
73
|
-
**
|
|
77
|
+
**4.5.0 "Review-Ready Intelligence Train"** shipped the post-4.4 implementation train:
|
|
74
78
|
|
|
75
|
-
-
|
|
76
|
-
-
|
|
77
|
-
- `
|
|
78
|
-
- `projscan
|
|
79
|
-
-
|
|
80
|
-
-
|
|
79
|
+
- Roadmap and release-train planning now default to the current post-4.4 product lines instead of stale shipped work.
|
|
80
|
+
- Adoption examples cover agent orchestration, package ownership, custom policy plugins, swarm coordination, and scoped evidence exports.
|
|
81
|
+
- `analyze`, `doctor`, and `ci` can scope and redact shareable evidence with direct flags or named `reportPolicies` presets.
|
|
82
|
+
- `projscan upgrade` and MCP `projscan_upgrade` support offline Python previews from manifests, Poetry/Pipfile/uv/PDM/Conda lockfiles, pinned requirements/constraints, and Python importers.
|
|
83
|
+
- Dataflow detects narrow Fastify and Koa request-source patterns, including Fastify raw URL/header and Koa IP evidence, while suppressing lookalike helpers and Koa response-body writes.
|
|
84
|
+
- Start next-action assembly and taint function identity were tightened during release readiness cleanup.
|
|
85
|
+
|
|
86
|
+
### Recently Completed — 4.4.0 (2026)
|
|
87
|
+
|
|
88
|
+
**4.4.0 "Agent Release Harness"** turned Mission Control into a release-ready agent harness:
|
|
89
|
+
|
|
90
|
+
- Repo-local AgentLoopKit and AgentFlight harness commands are surfaced as proof hints when harness files exist.
|
|
91
|
+
- Product-planning intents route to verifiable bug-hunt/action planning instead of generic orientation.
|
|
92
|
+
- Bug-hunt, release-train, evidence-pack, and review wording distinguish concrete fix targets from manual release sign-off actions.
|
|
93
|
+
- Public type contracts are split into focused modules with a dedicated `typecheck:public-types` gate.
|
|
94
|
+
- Same-SHA dirty-worktree review and directory-only verification guidance were fixed.
|
|
95
|
+
- The dev dependency chain cleared the release audit gate without adding runtime dependencies.
|
|
96
|
+
|
|
97
|
+
### Recently Completed — 4.0.0 through 4.3.1 (2026)
|
|
98
|
+
|
|
99
|
+
- **4.0.0 "Surface Consolidation"** removed the deprecated MCP tools `projscan_explain` and `projscan_graph` after a documented deprecation cycle. CLI commands were not removed. `projscan_file` and `projscan_semantic_graph` query mode are the replacements.
|
|
100
|
+
- **4.1.0 through 4.2.0 "Mission Control Handoffs"** added execution plans, cursors, runbooks, task cards, review gates, shortcut commands, and saved mission bundles.
|
|
101
|
+
- **4.3.0 "Mission Outcome Loop"** added `projscan start --mission <dir>` and Mission Proof outcome summaries.
|
|
102
|
+
- **4.3.1 "Mission Proof Polish"** added Markdown proof reports, saved proof output, newest/all-bundle selection, attention filters, one-line CI summaries, and reproducible demo media.
|
|
103
|
+
|
|
104
|
+
### Recently Completed — 3.6.0 and 3.7.x Coordination (2026)
|
|
105
|
+
|
|
106
|
+
The **Swarm Coordination arc** turned projscan into the local-first coordination substrate for parallel agents working one repo across git worktrees:
|
|
107
|
+
|
|
108
|
+
- `projscan collisions` / `projscan_collision` — same-file and dependency overlaps across in-flight worktrees, surfaced before branches merge.
|
|
109
|
+
- `projscan claim` / `projscan_claim` — advisory claims/leases over files, dirs, or symbols, shared across worktrees, with `--ttl` expiry, contention warnings, and `prune`.
|
|
110
|
+
- `projscan merge-risk` / `projscan_merge_risk` — safe integration order plus conflict hotspots.
|
|
111
|
+
- `projscan route` / `projscan_route` — deterministic goal-to-tool routing.
|
|
112
|
+
- `projscan coordinate` / `projscan_coordinate` — one-call readiness verdict over collisions, claims, and merge risk.
|
|
113
|
+
- `projscan coordinate --watch` / `projscan_coordinate_watch` — local polling with MCP coordination-change notifications.
|
|
81
114
|
|
|
82
115
|
### Recently Completed — 3.5.0 (2026)
|
|
83
116
|
|
|
@@ -133,11 +166,11 @@ Success signals: collisions prevented pre-merge, integration-failure-rate reduct
|
|
|
133
166
|
|
|
134
167
|
### Later
|
|
135
168
|
|
|
136
|
-
Later work should
|
|
169
|
+
Later work should deepen proven surfaces rather than add broad categories:
|
|
137
170
|
|
|
138
|
-
-
|
|
139
|
-
-
|
|
140
|
-
-
|
|
171
|
+
- Add stronger sub-file and symbol-level coordination once real swarm examples show which conflicts matter.
|
|
172
|
+
- Extend Python upgrade intelligence toward broader lockfile formats after Poetry and pinned-requirement evidence are proven useful.
|
|
173
|
+
- Add more framework dataflow patterns only when each has a clear request source, sink, and false-positive fixture.
|
|
141
174
|
|
|
142
175
|
## Non-goals
|
|
143
176
|
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
# Adoption Workflows
|
|
2
|
+
|
|
3
|
+
These examples turn projscan from a one-off scanner into a repeatable team
|
|
4
|
+
habit. They are written around the personas in `docs/PERSONAS.md`: skeptical
|
|
5
|
+
senior reviewer, platform lead, product engineer, release owner, and security
|
|
6
|
+
reviewer.
|
|
7
|
+
|
|
8
|
+
## 1. Agent Orchestration
|
|
9
|
+
|
|
10
|
+
Use this when a team is standardizing how agents start work, prove changes, and
|
|
11
|
+
hand off safely.
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
projscan privacy-check --offline
|
|
15
|
+
projscan start --intent "add billing webhook support" --format json
|
|
16
|
+
projscan preflight --mode before_edit --format json
|
|
17
|
+
projscan workplan --mode before_edit --format json
|
|
18
|
+
projscan agent-brief --intent "handoff billing webhook work" --format json
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Decision loop:
|
|
22
|
+
|
|
23
|
+
| Persona | Reads | Decision |
|
|
24
|
+
| --- | --- | --- |
|
|
25
|
+
| Product engineer | `start.missionControl.readyActions` | What can I run now? |
|
|
26
|
+
| Platform lead | `preflight.verdict`, coordination hints | Is parallel work safe? |
|
|
27
|
+
| Senior reviewer | proof commands and done criteria | Is the handoff reviewable? |
|
|
28
|
+
|
|
29
|
+
If the repo uses AgentLoopKit or AgentFlight, `projscan start` surfaces the
|
|
30
|
+
local harness proof commands when their config files exist. Run those commands
|
|
31
|
+
as part of the handoff proof:
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
npm exec agentloop -- status
|
|
35
|
+
npm exec agentflight -- verify
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## 2. Package Ownership
|
|
39
|
+
|
|
40
|
+
Use this when a monorepo or platform team needs to know who owns a dependency,
|
|
41
|
+
route review, or plan an upgrade.
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
projscan dependencies --format json
|
|
45
|
+
projscan semantic-graph --query package_importers --symbol fastapi --format json
|
|
46
|
+
projscan upgrade fastapi --format json
|
|
47
|
+
projscan agent-brief --intent "handoff package ownership for fastapi" --format json
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
For Node packages, `upgrade` reads local `package.json`, `node_modules`, local
|
|
51
|
+
CHANGELOG files, and importer evidence. For Python packages, it reads
|
|
52
|
+
`pyproject.toml`, `setup.cfg`, `setup.py`, root `requirements*.txt` files,
|
|
53
|
+
Poetry/Pipfile/uv/PDM/Conda lockfiles, and pinned root requirements/constraints, then
|
|
54
|
+
returns declared scope, current-version source, drift, and Python importers.
|
|
55
|
+
|
|
56
|
+
Decision loop:
|
|
57
|
+
|
|
58
|
+
| Persona | Reads | Decision |
|
|
59
|
+
| --- | --- | --- |
|
|
60
|
+
| Package owner | importer list | Which app or package needs review? |
|
|
61
|
+
| Release owner | drift and importer count | Is this safe for the current train? |
|
|
62
|
+
| Security reviewer | audit/dependencies plus importer evidence | Is a forced update justified? |
|
|
63
|
+
|
|
64
|
+
## 3. Custom Policy Plugin
|
|
65
|
+
|
|
66
|
+
Use this when team-specific rules matter more than generic static analysis,
|
|
67
|
+
such as service ownership, route policy, or security-sensitive directories.
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
projscan plugin init --kind analyzer --name team-policy
|
|
71
|
+
projscan plugin validate .projscan-plugins/team-policy.projscan-plugin.json
|
|
72
|
+
projscan plugin test .projscan-plugins/team-policy.projscan-plugin.json
|
|
73
|
+
PROJSCAN_PLUGINS_PREVIEW=1 projscan doctor --format json
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Start from packaged examples:
|
|
77
|
+
|
|
78
|
+
- `docs/examples/plugins/policy.projscan-plugin.json`
|
|
79
|
+
- `docs/examples/plugins/api-route-ownership.projscan-plugin.json`
|
|
80
|
+
- `docs/examples/plugins/security-sensitive-files.projscan-plugin.json`
|
|
81
|
+
- `docs/examples/plugins/team-radar.projscan-plugin.json`
|
|
82
|
+
|
|
83
|
+
Decision loop:
|
|
84
|
+
|
|
85
|
+
| Persona | Reads | Decision |
|
|
86
|
+
| --- | --- | --- |
|
|
87
|
+
| Platform lead | plugin diagnostics | Is the rule trusted enough for CI? |
|
|
88
|
+
| Security reviewer | emitted issues | Does the policy catch the right risky paths? |
|
|
89
|
+
| Product engineer | suggested action | Can this be fixed without tribal context? |
|
|
90
|
+
|
|
91
|
+
## 4. Shareable Evidence With Path Controls
|
|
92
|
+
|
|
93
|
+
Use this when a team wants to share a health or CI artifact without exposing
|
|
94
|
+
repo layout or sensitive paths.
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
projscan analyze --report-scope src/api --redact-paths --format json > reports/api-analysis.json
|
|
98
|
+
projscan doctor --report-scope src/api --redact-paths --format markdown > reports/api-health.md
|
|
99
|
+
projscan ci --report-scope src/api --redact-paths --format sarif > reports/api.sarif
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
`--report-scope` keeps only issues and files under the listed repo-relative
|
|
103
|
+
paths. `--redact-paths` replaces file paths with stable labels such as
|
|
104
|
+
`redacted-path-1`, so reviewers can correlate evidence without seeing the
|
|
105
|
+
original repo structure.
|
|
106
|
+
|
|
107
|
+
When the same evidence shape is reused by a partner review, security check, or
|
|
108
|
+
release train, put it in config and select it by name:
|
|
109
|
+
|
|
110
|
+
```json
|
|
111
|
+
{
|
|
112
|
+
"reportPolicies": {
|
|
113
|
+
"apiEvidence": {
|
|
114
|
+
"reportScope": ["src/api"],
|
|
115
|
+
"redactPaths": true
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
projscan analyze --report-policy apiEvidence --format json > reports/api-analysis.json
|
|
123
|
+
projscan doctor --report-policy apiEvidence --format markdown > reports/api-health.md
|
|
124
|
+
projscan ci --report-policy apiEvidence --format sarif > reports/api.sarif
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
Use direct `--report-scope` or `--redact-paths` flags with `--report-policy` for
|
|
128
|
+
one-off overrides without changing the shared config preset.
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
# Swarm Coordination Workflow
|
|
2
|
+
|
|
3
|
+
Use this recipe when two or more agents, worktrees, or developers are changing
|
|
4
|
+
the same repo. The goal is not to prevent parallel work; it is to make overlap,
|
|
5
|
+
claim contention, and merge order visible before code lands.
|
|
6
|
+
|
|
7
|
+
## Personas
|
|
8
|
+
|
|
9
|
+
- Platform lead: wants low merge conflict rate and clear ownership when several
|
|
10
|
+
agents are active.
|
|
11
|
+
- Product engineer: wants to keep moving without reading every sibling branch.
|
|
12
|
+
- Release owner: wants a merge order and proof that high-risk overlaps were
|
|
13
|
+
reviewed before sign-off.
|
|
14
|
+
|
|
15
|
+
## Start of Work
|
|
16
|
+
|
|
17
|
+
Run this before the first edit in each worktree:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
projscan start --intent "show coordination status for parallel agents" --format json
|
|
21
|
+
projscan coordinate --format json
|
|
22
|
+
projscan claim list --format json
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
If the work has a known file, claim it with a short lease:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
projscan claim add src/core/start.ts --agent api-agent --ttl 2700 --format json
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Treat a claim conflict as a routing signal. Either choose another task, split
|
|
32
|
+
the file, or ask the owner to release the claim.
|
|
33
|
+
|
|
34
|
+
## During Work
|
|
35
|
+
|
|
36
|
+
Use the dedicated coordination tools for specific questions:
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
projscan collisions --format json
|
|
40
|
+
projscan merge-risk --format json
|
|
41
|
+
projscan coordinate --format json
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Read the outputs this way:
|
|
45
|
+
|
|
46
|
+
| Tool | Question answered | Action |
|
|
47
|
+
| --- | --- | --- |
|
|
48
|
+
| `collisions` | Which worktrees touch the same files or dependent files? | Move one branch first, split work, or ask for review. |
|
|
49
|
+
| `claim list` | Who says they own a file, directory, or symbol right now? | Avoid edits under active leases unless agreed. |
|
|
50
|
+
| `merge-risk` | Which branch should merge first? | Integrate the least-entangled branch before larger branches. |
|
|
51
|
+
| `coordinate` | Is the current swarm clear, cautious, or conflicted? | Use this as the one-line status in handoffs. |
|
|
52
|
+
| `agent-brief` | What should the next agent know? | Include coordination hints in the next-agent packet. |
|
|
53
|
+
|
|
54
|
+
The JSON reports for `collisions` and `coordinate` include an `evidence` block
|
|
55
|
+
with the active command path, current worktree state, local-only source signals,
|
|
56
|
+
the validation workflow above, and a reminder that session memory is separate
|
|
57
|
+
from current Git/worktree evidence. The default `coordinate` console view prints
|
|
58
|
+
the same session-boundary reminder inside its `Evidence` section.
|
|
59
|
+
When multiple worktrees are present, `agent-brief` also carries a
|
|
60
|
+
`context.coordinationHints` entry even for a clear swarm, so the next agent knows
|
|
61
|
+
to validate locally with `projscan coordinate --format json`,
|
|
62
|
+
`projscan coordinate --watch --interval 5 --format json`, and
|
|
63
|
+
`projscan agent-brief --format json` before continuing parallel edits.
|
|
64
|
+
|
|
65
|
+
For MCP clients that support long-running notifications, use the watch tool:
|
|
66
|
+
|
|
67
|
+
```text
|
|
68
|
+
projscan_coordinate_watch { "action": "start" }
|
|
69
|
+
projscan_coordinate_watch { "action": "list" }
|
|
70
|
+
projscan_coordinate_watch { "action": "stop" }
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
For CLI users, `coordinate` also supports polling:
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
projscan coordinate --watch --interval 5 --format json
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
The watch loop should be treated as advisory evidence. A changed notification
|
|
80
|
+
or emitted watch row means rerun `projscan coordinate` before editing or merging.
|
|
81
|
+
|
|
82
|
+
## Before Handoff
|
|
83
|
+
|
|
84
|
+
Capture a compact handoff with coordination evidence:
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
projscan agent-brief --intent "handoff current parallel-agent work" --format json
|
|
88
|
+
projscan preflight --mode before_commit --format json
|
|
89
|
+
projscan coordinate --format json
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Handoff text should include:
|
|
93
|
+
|
|
94
|
+
- active claims you hold
|
|
95
|
+
- collision count and readiness verdict
|
|
96
|
+
- merge-risk order when multiple worktrees exist
|
|
97
|
+
- exact proof commands already run
|
|
98
|
+
- claim release command if the next agent owns the follow-up
|
|
99
|
+
|
|
100
|
+
## Before Merge
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
projscan preflight --mode before_merge --format json
|
|
104
|
+
projscan merge-risk --format json
|
|
105
|
+
projscan coordinate --format json
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
Merge only when the coordination verdict is `clear` or when the release owner
|
|
109
|
+
has reviewed the listed conflicts. If the verdict is `conflicted`, resolve or
|
|
110
|
+
split the overlap before merging.
|
|
111
|
+
|
|
112
|
+
## Evidence Gaps To Track
|
|
113
|
+
|
|
114
|
+
These are the next hardening targets for real swarm usage:
|
|
115
|
+
|
|
116
|
+
- transitive collision recall: prove dependent-file conflicts are caught, not
|
|
117
|
+
only same-file conflicts
|
|
118
|
+
- live watch adoption: prove agents notice and act on coordination changes
|
|
119
|
+
- preflight and agent-brief integration: prove the same coordination facts show
|
|
120
|
+
up where agents already look before editing or handing off
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "projscan",
|
|
3
3
|
"mcpName": "io.github.abhiyoheswaran1/projscan",
|
|
4
|
-
"version": "4.
|
|
4
|
+
"version": "4.6.0",
|
|
5
5
|
"description": "Agent-first code intelligence. MCP server (2025-03-26) with 11 AST adapters covering 12 named languages: JavaScript, TypeScript, Python, Go, Java, Ruby, Rust, PHP, C#, Kotlin, Swift, and C++; repo understanding maps (projscan_understand), stable v3 semantic graph (projscan_semantic_graph), dataflow risk engine with bridge-helper detection (projscan_dataflow), code graph, file + per-function AST cyclomatic complexity, per-function fan-in + fan-out, coupling + cycle detection, structural PR diff with HTML reporter, coverage report with HTML reporter, intent-grounded one-call PR review (projscan_review with optional `intent` arg, new taint flows, contract changes, and newDataflowRisks) and long-running PR-watch mode with structured per-bucket deltas (projscan_review_watch), first-60-seconds workflow orientation (projscan_start), agent workplans (projscan_workplan), bug-hunt queues (projscan_bug_hunt), product-line planning (projscan_release_train), evidence packs (projscan_evidence_pack), regression planning (projscan_regression_plan), agent briefs (projscan_agent_brief), quality scorecards (projscan_quality_scorecard), and preflight with supply-chain IOC evidence, rule-driven fix suggestions + mechanical apply layer with rollback (projscan_apply_fix, projscan_fix_suggest, projscan_explain_issue), source-to-sink taint analysis (projscan_taint) with truncation reporting, transitive blast-radius analysis with cross-repo mode (projscan_impact for files and symbols), cross-repo workspace registration + intelligence (projscan_workspace_graph), per-function semantic search chunks (sub-file embeddings), per-rule confidence + severity drift + cost-summary analytics with live streaming (projscan_cost_summary), stable local analyzer + reporter plugin API (projscan_plugin, CLI --reporter, opt-in via PROJSCAN_PLUGINS_PREVIEW=1), monorepo workspace awareness with cross-package import policy + per-package dependencies / outdated / audit, BM25 + optional semantic search, cursor pagination, progress notifications, context-budgeted output, and a stable-surface CI guard. CLI on the side.",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "./dist/index.js",
|
|
@@ -21,6 +21,8 @@
|
|
|
21
21
|
"docs/demos/projscan-mission-control.tape",
|
|
22
22
|
"docs/demos/projscan-mission-proof.tape",
|
|
23
23
|
"docs/plugin.schema.json",
|
|
24
|
+
"docs/examples/adoption-workflows.md",
|
|
25
|
+
"docs/examples/swarm-coordination.md",
|
|
24
26
|
"docs/projscan-mission-control.png",
|
|
25
27
|
"docs/projscan-mission-control.gif",
|
|
26
28
|
"docs/projscan-proof-router.png",
|