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,318 @@
|
|
|
1
|
+
export function fallbackTrackForLine(line) {
|
|
2
|
+
if (line.startsWith('3.0')) {
|
|
3
|
+
return {
|
|
4
|
+
line,
|
|
5
|
+
theme: 'Graph Operations Readiness',
|
|
6
|
+
outcome: 'Agents can trust graph-backed review, impact, dataflow, and release gates during everyday repo work.',
|
|
7
|
+
includedInPlan: true,
|
|
8
|
+
scope: [
|
|
9
|
+
'graph corpus release gate',
|
|
10
|
+
'dataflow precision hardening',
|
|
11
|
+
'ownership-aware impact',
|
|
12
|
+
],
|
|
13
|
+
successCriteria: [
|
|
14
|
+
'release readiness runs the graph corpus baseline gate',
|
|
15
|
+
'custom dataflow rules stay visible when users configure them',
|
|
16
|
+
'impact boundary summaries identify likely owners when metadata exists',
|
|
17
|
+
],
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
if (line.startsWith('3.1')) {
|
|
21
|
+
return {
|
|
22
|
+
line,
|
|
23
|
+
theme: 'Graph Intelligence Expansion',
|
|
24
|
+
outcome: 'Agents get narrower package-scoped evidence and richer framework-aware dataflow before editing high-risk paths.',
|
|
25
|
+
includedInPlan: true,
|
|
26
|
+
scope: [
|
|
27
|
+
'package-scoped review evidence',
|
|
28
|
+
'framework route dataflow precision',
|
|
29
|
+
'deeper ownership and package boundary metadata',
|
|
30
|
+
],
|
|
31
|
+
successCriteria: [
|
|
32
|
+
'review package filters apply to taint, dataflow, graph evidence, and verdicts',
|
|
33
|
+
'route and request-handler dataflow avoids generated-code noise',
|
|
34
|
+
'impact reports keep ownership context without expanding the stable schema',
|
|
35
|
+
],
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
if (line.startsWith('2.3')) {
|
|
39
|
+
return {
|
|
40
|
+
line,
|
|
41
|
+
theme: 'Agent Mission Control',
|
|
42
|
+
outcome: 'Agents can decide what to do next, hand off safely, and prove readiness without rereading the whole repo.',
|
|
43
|
+
includedInPlan: true,
|
|
44
|
+
scope: ['prioritized workplans', 'handoff-ready next actions', 'readiness planning'],
|
|
45
|
+
successCriteria: [
|
|
46
|
+
'MCP and CLI expose the same planning contracts',
|
|
47
|
+
'plans include evidence, priority, and verification commands',
|
|
48
|
+
'planning output stays read-only',
|
|
49
|
+
],
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
if (line.startsWith('2.4')) {
|
|
53
|
+
return {
|
|
54
|
+
line,
|
|
55
|
+
theme: 'Autonomous Bug Hunt',
|
|
56
|
+
outcome: 'Agents get a ranked action queue that combines health, preflight, hotspots, and coordination evidence.',
|
|
57
|
+
includedInPlan: true,
|
|
58
|
+
scope: ['bug-hunt action queue', 'verification matrix', 'broad test-suite reliability pass'],
|
|
59
|
+
successCriteria: [
|
|
60
|
+
'bug-hunt output names the first prioritized action and commands to prove it',
|
|
61
|
+
'clean repos still receive reproducible verification guidance',
|
|
62
|
+
'full project verification passes from the committed tree',
|
|
63
|
+
],
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
if (line.startsWith('2.5')) {
|
|
67
|
+
return {
|
|
68
|
+
line,
|
|
69
|
+
theme: 'Release Evidence Pack',
|
|
70
|
+
outcome: 'Humans and agents get one approval packet that ties product scope, preflight evidence, bug-hunt status, workplan tasks, and website-update copy together.',
|
|
71
|
+
includedInPlan: true,
|
|
72
|
+
scope: [
|
|
73
|
+
'approval-ready evidence packet',
|
|
74
|
+
'product-facing changelog and website prompt',
|
|
75
|
+
'read-only evidence gathering',
|
|
76
|
+
],
|
|
77
|
+
successCriteria: [
|
|
78
|
+
'evidence pack includes planning, bug hunt, workplan, and preflight artifacts',
|
|
79
|
+
'website update prompt is generated only as text evidence',
|
|
80
|
+
'evidence generation stays read-only',
|
|
81
|
+
],
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
if (line.startsWith('2.6')) {
|
|
85
|
+
return {
|
|
86
|
+
line,
|
|
87
|
+
theme: 'Regression Planning',
|
|
88
|
+
outcome: 'Agents get a smoke, focused, or full regression matrix that turns product risk into concrete verification commands.',
|
|
89
|
+
includedInPlan: true,
|
|
90
|
+
scope: [
|
|
91
|
+
'risk-based regression targets',
|
|
92
|
+
'smoke/focused/full verification levels',
|
|
93
|
+
'deduplicated command matrix',
|
|
94
|
+
],
|
|
95
|
+
successCriteria: [
|
|
96
|
+
'regression plan includes commands for the selected level',
|
|
97
|
+
'bug-hunt and preflight signals become explicit regression targets',
|
|
98
|
+
'full level covers tests, build, lint, stability, and package checks',
|
|
99
|
+
],
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
if (line.startsWith('2.7')) {
|
|
103
|
+
return {
|
|
104
|
+
line,
|
|
105
|
+
theme: 'Agent Brief',
|
|
106
|
+
outcome: 'Agents get a compact context packet with focus items, repo context, guardrails, and suggested next actions.',
|
|
107
|
+
includedInPlan: true,
|
|
108
|
+
scope: ['next-agent focus packet', 'guardrail commands', 'session and repo context summary'],
|
|
109
|
+
successCriteria: [
|
|
110
|
+
'brief includes health, context, focus, guardrails, and next actions',
|
|
111
|
+
'CLI and MCP expose the same schema',
|
|
112
|
+
'brief output stays compact enough for handoff',
|
|
113
|
+
],
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
if (line.startsWith('2.8')) {
|
|
117
|
+
return {
|
|
118
|
+
line,
|
|
119
|
+
theme: 'Quality Scorecard',
|
|
120
|
+
outcome: 'Agents and reviewers get a dimensioned quality view with top risks and verification commands.',
|
|
121
|
+
includedInPlan: true,
|
|
122
|
+
scope: ['quality dimensions', 'top-risk ranking', 'verification command set'],
|
|
123
|
+
successCriteria: [
|
|
124
|
+
'scorecard reports health, security, tests, maintainability, and coordination',
|
|
125
|
+
'top risks include concrete commands',
|
|
126
|
+
'CLI and MCP expose the same scorecard schema',
|
|
127
|
+
],
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
return {
|
|
131
|
+
line,
|
|
132
|
+
theme: 'Quality Hardening',
|
|
133
|
+
outcome: 'The line gets explicit readiness checks.',
|
|
134
|
+
includedInPlan: true,
|
|
135
|
+
scope: ['quality fixes', 'documentation alignment', 'readiness checks'],
|
|
136
|
+
successCriteria: ['all checks pass', 'public surface is documented', 'planning output stays read-only'],
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
export function fallbackTasksForTrack(track) {
|
|
140
|
+
if (track.line.startsWith('3.0')) {
|
|
141
|
+
return [
|
|
142
|
+
{
|
|
143
|
+
id: 'rt-3-0-graph-readiness',
|
|
144
|
+
priority: 'p0',
|
|
145
|
+
title: 'Harden graph operations readiness',
|
|
146
|
+
why: 'Agents trust projscan when graph/dataflow signals are gated, precise, and routed to the right owners.',
|
|
147
|
+
track: track.line,
|
|
148
|
+
files: ['scripts/release-check.mjs', 'src/core/dataflowFilters.ts', 'src/core/impact.ts'],
|
|
149
|
+
verification: {
|
|
150
|
+
commands: [
|
|
151
|
+
'npm run release:check',
|
|
152
|
+
'npm run check:graph-corpus',
|
|
153
|
+
'projscan impact --symbol foo --cross-repo --format json',
|
|
154
|
+
],
|
|
155
|
+
expected: 'Release readiness includes graph corpus checks, custom dataflow rules remain visible, and impact reports ownership boundaries.',
|
|
156
|
+
},
|
|
157
|
+
},
|
|
158
|
+
];
|
|
159
|
+
}
|
|
160
|
+
if (track.line.startsWith('3.1')) {
|
|
161
|
+
return [
|
|
162
|
+
{
|
|
163
|
+
id: 'rt-3-1-graph-expansion',
|
|
164
|
+
priority: 'p1',
|
|
165
|
+
title: 'Expand graph intelligence precision',
|
|
166
|
+
why: 'The next product step should make high-risk review evidence narrower and framework-aware without forcing agents to inspect full graphs.',
|
|
167
|
+
track: track.line,
|
|
168
|
+
files: ['src/core/review.ts', 'src/core/dataflow.ts', 'src/core/impact.ts'],
|
|
169
|
+
verification: {
|
|
170
|
+
commands: [
|
|
171
|
+
'projscan review --base main --head HEAD --format json',
|
|
172
|
+
'projscan dataflow --format json',
|
|
173
|
+
],
|
|
174
|
+
expected: 'Review and dataflow evidence are scoped to the relevant package, route, and ownership boundaries.',
|
|
175
|
+
},
|
|
176
|
+
},
|
|
177
|
+
];
|
|
178
|
+
}
|
|
179
|
+
if (track.line.startsWith('2.3')) {
|
|
180
|
+
return [
|
|
181
|
+
{
|
|
182
|
+
id: 'rt-2-3-agent-readiness',
|
|
183
|
+
priority: 'p0',
|
|
184
|
+
title: 'Finish agent mission-control readiness',
|
|
185
|
+
why: 'Planning tools only matter if they produce short, ordered, evidence-backed actions that another agent can execute.',
|
|
186
|
+
track: track.line,
|
|
187
|
+
files: [
|
|
188
|
+
'src/core/workplan.ts',
|
|
189
|
+
'src/cli/commands/workplan.ts',
|
|
190
|
+
'src/mcp/tools/workplan.ts',
|
|
191
|
+
],
|
|
192
|
+
verification: {
|
|
193
|
+
commands: ['projscan workplan --mode release --format json', 'projscan handoff'],
|
|
194
|
+
expected: 'Workplan and handoff both include prioritized tasks and verification commands.',
|
|
195
|
+
},
|
|
196
|
+
},
|
|
197
|
+
];
|
|
198
|
+
}
|
|
199
|
+
if (track.line.startsWith('2.4')) {
|
|
200
|
+
return [
|
|
201
|
+
{
|
|
202
|
+
id: 'rt-2-4-bug-hunt-gate',
|
|
203
|
+
priority: 'p0',
|
|
204
|
+
title: 'Ship the autonomous bug-hunt gate',
|
|
205
|
+
why: 'Before a larger release, the product should tell agents where to polish first and how to prove each fix.',
|
|
206
|
+
track: track.line,
|
|
207
|
+
files: ['src/core/bugHunt.ts', 'src/cli/commands/bugHunt.ts', 'src/mcp/tools/bugHunt.ts'],
|
|
208
|
+
verification: {
|
|
209
|
+
commands: ['projscan bug-hunt --format json', 'npm test'],
|
|
210
|
+
expected: 'Bug hunt returns a prioritized action queue and the test suite passes.',
|
|
211
|
+
},
|
|
212
|
+
},
|
|
213
|
+
];
|
|
214
|
+
}
|
|
215
|
+
if (track.line.startsWith('2.5')) {
|
|
216
|
+
return [
|
|
217
|
+
{
|
|
218
|
+
id: 'rt-2-5-evidence-pack',
|
|
219
|
+
priority: 'p0',
|
|
220
|
+
title: 'Assemble the release evidence pack',
|
|
221
|
+
why: 'A larger product update needs one human-readable evidence packet instead of scattered command output.',
|
|
222
|
+
track: track.line,
|
|
223
|
+
files: [
|
|
224
|
+
'src/core/releaseEvidence.ts',
|
|
225
|
+
'src/cli/commands/evidencePack.ts',
|
|
226
|
+
'src/mcp/tools/evidencePack.ts',
|
|
227
|
+
],
|
|
228
|
+
verification: {
|
|
229
|
+
commands: [
|
|
230
|
+
'projscan evidence-pack --line 2.3.x --line 2.4.x --line 2.5.x --line 2.6.x --line 2.7.x --line 2.8.x --format json',
|
|
231
|
+
],
|
|
232
|
+
expected: 'Evidence pack returns all planned lines, approval evidence, and changelog entries.',
|
|
233
|
+
},
|
|
234
|
+
},
|
|
235
|
+
];
|
|
236
|
+
}
|
|
237
|
+
if (track.line.startsWith('2.6')) {
|
|
238
|
+
return [
|
|
239
|
+
{
|
|
240
|
+
id: 'rt-2-6-regression-plan',
|
|
241
|
+
priority: 'p0',
|
|
242
|
+
title: 'Ship the regression planning matrix',
|
|
243
|
+
why: 'A bigger product update should tell agents exactly which smoke, focused, and full checks prove readiness.',
|
|
244
|
+
track: track.line,
|
|
245
|
+
files: [
|
|
246
|
+
'src/core/regressionPlan.ts',
|
|
247
|
+
'src/cli/commands/regressionPlan.ts',
|
|
248
|
+
'src/mcp/tools/regressionPlan.ts',
|
|
249
|
+
],
|
|
250
|
+
verification: {
|
|
251
|
+
commands: ['projscan regression-plan --level full --format json', 'npm test'],
|
|
252
|
+
expected: 'Regression plan returns a deduplicated command matrix and the project suite passes.',
|
|
253
|
+
},
|
|
254
|
+
},
|
|
255
|
+
];
|
|
256
|
+
}
|
|
257
|
+
if (track.line.startsWith('2.7')) {
|
|
258
|
+
return [
|
|
259
|
+
{
|
|
260
|
+
id: 'rt-2-7-agent-brief',
|
|
261
|
+
priority: 'p0',
|
|
262
|
+
title: 'Ship the agent brief',
|
|
263
|
+
why: 'Agents need a compact context packet that can be read quickly before choosing the next action.',
|
|
264
|
+
track: track.line,
|
|
265
|
+
files: [
|
|
266
|
+
'src/core/agentBrief.ts',
|
|
267
|
+
'src/cli/commands/agentBrief.ts',
|
|
268
|
+
'src/mcp/tools/agentBrief.ts',
|
|
269
|
+
],
|
|
270
|
+
verification: {
|
|
271
|
+
commands: ['projscan agent-brief --intent release --format json'],
|
|
272
|
+
expected: 'Agent brief returns focus, context, guardrails, and suggested next actions.',
|
|
273
|
+
},
|
|
274
|
+
},
|
|
275
|
+
];
|
|
276
|
+
}
|
|
277
|
+
if (track.line.startsWith('2.8')) {
|
|
278
|
+
return [
|
|
279
|
+
{
|
|
280
|
+
id: 'rt-2-8-quality-scorecard',
|
|
281
|
+
priority: 'p0',
|
|
282
|
+
title: 'Ship the quality scorecard',
|
|
283
|
+
why: 'Agents and reviewers need a dimensioned quality view before deciding what to polish next.',
|
|
284
|
+
track: track.line,
|
|
285
|
+
files: [
|
|
286
|
+
'src/core/qualityScorecard.ts',
|
|
287
|
+
'src/cli/commands/qualityScorecard.ts',
|
|
288
|
+
'src/mcp/tools/qualityScorecard.ts',
|
|
289
|
+
],
|
|
290
|
+
verification: {
|
|
291
|
+
commands: ['projscan quality-scorecard --format json'],
|
|
292
|
+
expected: 'Quality scorecard returns dimensions, top risks, and verification commands.',
|
|
293
|
+
},
|
|
294
|
+
},
|
|
295
|
+
];
|
|
296
|
+
}
|
|
297
|
+
return [
|
|
298
|
+
{
|
|
299
|
+
id: `rt-${slug(track.line)}-quality`,
|
|
300
|
+
priority: 'p1',
|
|
301
|
+
title: `Plan ${track.line} quality work`,
|
|
302
|
+
why: 'Every product line needs an explicit verification task.',
|
|
303
|
+
track: track.line,
|
|
304
|
+
files: [],
|
|
305
|
+
verification: {
|
|
306
|
+
commands: ['npm test', 'npm run lint'],
|
|
307
|
+
expected: 'Quality checks pass for this product line.',
|
|
308
|
+
},
|
|
309
|
+
},
|
|
310
|
+
];
|
|
311
|
+
}
|
|
312
|
+
function slug(value) {
|
|
313
|
+
return (value
|
|
314
|
+
.replace(/[^a-zA-Z0-9]+/g, '-')
|
|
315
|
+
.replace(/^-+|-+$/g, '')
|
|
316
|
+
.toLowerCase() || 'line');
|
|
317
|
+
}
|
|
318
|
+
//# sourceMappingURL=releaseTrainFallbacks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"releaseTrainFallbacks.js","sourceRoot":"","sources":["../../src/core/releaseTrainFallbacks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { AnalysisReport, Issue } from '../types.js';
|
|
2
|
+
import type { ReportPolicyPreset } from '../types/config.js';
|
|
3
|
+
export interface ReportControlOptions {
|
|
4
|
+
scopes?: string[];
|
|
5
|
+
redactPaths?: boolean;
|
|
6
|
+
}
|
|
7
|
+
export interface ReportControlsMetadata {
|
|
8
|
+
active: true;
|
|
9
|
+
scopeCount: number;
|
|
10
|
+
redactPaths: boolean;
|
|
11
|
+
pathLabelFormat?: 'redacted-path-N';
|
|
12
|
+
}
|
|
13
|
+
interface ResolveReportControlsInput {
|
|
14
|
+
reportPolicies?: Record<string, ReportPolicyPreset>;
|
|
15
|
+
reportPolicy?: unknown;
|
|
16
|
+
reportScope?: unknown;
|
|
17
|
+
redactPaths?: unknown;
|
|
18
|
+
}
|
|
19
|
+
export declare function parseReportScopes(input: unknown): string[];
|
|
20
|
+
export declare function resolveReportControls(input: ResolveReportControlsInput): ReportControlOptions;
|
|
21
|
+
export declare function applyReportControlsToIssues(issues: Issue[], options?: ReportControlOptions): Issue[];
|
|
22
|
+
export declare function reportControlsMetadata(options?: ReportControlOptions): ReportControlsMetadata | undefined;
|
|
23
|
+
export declare function applyReportControlsToAnalysis(report: AnalysisReport, options?: ReportControlOptions): AnalysisReport;
|
|
24
|
+
export {};
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
export function parseReportScopes(input) {
|
|
2
|
+
if (typeof input !== 'string')
|
|
3
|
+
return [];
|
|
4
|
+
return input
|
|
5
|
+
.split(',')
|
|
6
|
+
.map(normalizeReportPath)
|
|
7
|
+
.filter((scope) => Boolean(scope));
|
|
8
|
+
}
|
|
9
|
+
export function resolveReportControls(input) {
|
|
10
|
+
let controls = {};
|
|
11
|
+
if (typeof input.reportPolicy === 'string') {
|
|
12
|
+
const policyName = input.reportPolicy.trim();
|
|
13
|
+
if (!policyName) {
|
|
14
|
+
throw new Error('Missing report policy name. Pass --report-policy <name> with a configured preset.');
|
|
15
|
+
}
|
|
16
|
+
const policy = input.reportPolicies?.[policyName];
|
|
17
|
+
if (!policy) {
|
|
18
|
+
throw new Error(`Unknown report policy "${policyName}". Define reportPolicies.${policyName} in .projscanrc.json or remove --report-policy.`);
|
|
19
|
+
}
|
|
20
|
+
controls = {
|
|
21
|
+
scopes: normalizeScopes(policy.reportScope),
|
|
22
|
+
redactPaths: policy.redactPaths === true,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
const directScopes = parseReportScopes(input.reportScope);
|
|
26
|
+
if (directScopes.length > 0)
|
|
27
|
+
controls.scopes = directScopes;
|
|
28
|
+
if (input.redactPaths === true)
|
|
29
|
+
controls.redactPaths = true;
|
|
30
|
+
return controls;
|
|
31
|
+
}
|
|
32
|
+
export function applyReportControlsToIssues(issues, options = {}) {
|
|
33
|
+
return applyReportControlsToIssuesWithRedactor(issues, normalizeScopes(options.scopes), options.redactPaths ? createPathRedactor() : null);
|
|
34
|
+
}
|
|
35
|
+
export function reportControlsMetadata(options = {}) {
|
|
36
|
+
const scopes = normalizeScopes(options.scopes);
|
|
37
|
+
const redactPaths = options.redactPaths === true;
|
|
38
|
+
if (scopes.length === 0 && !redactPaths)
|
|
39
|
+
return undefined;
|
|
40
|
+
return {
|
|
41
|
+
active: true,
|
|
42
|
+
scopeCount: scopes.length,
|
|
43
|
+
redactPaths,
|
|
44
|
+
...(redactPaths ? { pathLabelFormat: 'redacted-path-N' } : {}),
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
export function applyReportControlsToAnalysis(report, options = {}) {
|
|
48
|
+
const scopes = normalizeScopes(options.scopes);
|
|
49
|
+
const redactor = options.redactPaths ? createPathRedactor() : null;
|
|
50
|
+
const files = filterFilesByScope(report.scan.files, scopes).map((file) => redactFileEntry(file, redactor));
|
|
51
|
+
const issues = applyReportControlsToIssuesWithRedactor(report.issues, scopes, redactor);
|
|
52
|
+
const dependencies = applyReportControlsToDependencies(report.dependencies, scopes, redactor);
|
|
53
|
+
const redactedRoot = redactor ? '<redacted-root>' : report.rootPath;
|
|
54
|
+
return {
|
|
55
|
+
...report,
|
|
56
|
+
rootPath: redactedRoot,
|
|
57
|
+
scan: {
|
|
58
|
+
...report.scan,
|
|
59
|
+
rootPath: redactedRoot,
|
|
60
|
+
totalFiles: files.length,
|
|
61
|
+
totalDirectories: countDirectories(files),
|
|
62
|
+
files,
|
|
63
|
+
directoryTree: scopes.length > 0 || redactor
|
|
64
|
+
? buildDirectoryTree(redactor ? '<redacted-root>' : report.scan.directoryTree.name, files)
|
|
65
|
+
: report.scan.directoryTree,
|
|
66
|
+
},
|
|
67
|
+
dependencies,
|
|
68
|
+
issues,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
function applyReportControlsToDependencies(dependencies, scopes, redactor) {
|
|
72
|
+
if (!dependencies?.byWorkspace)
|
|
73
|
+
return dependencies;
|
|
74
|
+
return {
|
|
75
|
+
...dependencies,
|
|
76
|
+
byWorkspace: dependencies.byWorkspace
|
|
77
|
+
.filter((workspace) => dependencyWorkspaceInScope(workspace.relativePath, scopes))
|
|
78
|
+
.map((workspace) => ({
|
|
79
|
+
...workspace,
|
|
80
|
+
relativePath: redactor && workspace.relativePath ? redactor(workspace.relativePath) : workspace.relativePath,
|
|
81
|
+
})),
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
function dependencyWorkspaceInScope(relativePath, scopes) {
|
|
85
|
+
if (scopes.length === 0)
|
|
86
|
+
return true;
|
|
87
|
+
return isInScope(relativePath, scopes);
|
|
88
|
+
}
|
|
89
|
+
function applyReportControlsToIssuesWithRedactor(issues, scopes, redactor) {
|
|
90
|
+
const out = [];
|
|
91
|
+
for (const issue of issues) {
|
|
92
|
+
const scopedLocations = filterLocationsByScope(issue.locations, scopes);
|
|
93
|
+
if (scopes.length > 0 && scopedLocations.length === 0)
|
|
94
|
+
continue;
|
|
95
|
+
out.push(redactIssue(issue, scopedLocations, redactor));
|
|
96
|
+
}
|
|
97
|
+
return out;
|
|
98
|
+
}
|
|
99
|
+
function normalizeScopes(scopes) {
|
|
100
|
+
return [...new Set((scopes ?? []).map(normalizeReportPath).filter(Boolean))];
|
|
101
|
+
}
|
|
102
|
+
function normalizeReportPath(value) {
|
|
103
|
+
let normalized = value.trim().replace(/\\/g, '/');
|
|
104
|
+
normalized = normalized.replace(/\/+/g, '/');
|
|
105
|
+
normalized = normalized.replace(/^\.\//, '');
|
|
106
|
+
normalized = normalized.replace(/\/$/, '');
|
|
107
|
+
if (!normalized || normalized === '.')
|
|
108
|
+
return null;
|
|
109
|
+
return normalized;
|
|
110
|
+
}
|
|
111
|
+
function isInScope(filePath, scopes) {
|
|
112
|
+
if (scopes.length === 0)
|
|
113
|
+
return true;
|
|
114
|
+
const normalized = normalizeReportPath(filePath);
|
|
115
|
+
if (!normalized)
|
|
116
|
+
return false;
|
|
117
|
+
return scopes.some((scope) => normalized === scope || normalized.startsWith(`${scope}/`));
|
|
118
|
+
}
|
|
119
|
+
function filterLocationsByScope(locations, scopes) {
|
|
120
|
+
if (!locations || locations.length === 0)
|
|
121
|
+
return [];
|
|
122
|
+
return locations.filter((loc) => loc.file && isInScope(loc.file, scopes));
|
|
123
|
+
}
|
|
124
|
+
function filterFilesByScope(files, scopes) {
|
|
125
|
+
if (scopes.length === 0)
|
|
126
|
+
return [...files];
|
|
127
|
+
return files.filter((file) => isInScope(file.relativePath, scopes));
|
|
128
|
+
}
|
|
129
|
+
function createPathRedactor() {
|
|
130
|
+
const seen = new Map();
|
|
131
|
+
return (filePath) => {
|
|
132
|
+
const normalized = normalizeReportPath(filePath) ?? filePath;
|
|
133
|
+
const existing = seen.get(normalized);
|
|
134
|
+
if (existing)
|
|
135
|
+
return existing;
|
|
136
|
+
const next = `redacted-path-${seen.size + 1}`;
|
|
137
|
+
seen.set(normalized, next);
|
|
138
|
+
return next;
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
function redactLocations(locations, redactor) {
|
|
142
|
+
if (!redactor)
|
|
143
|
+
return locations.map((loc) => ({ ...loc }));
|
|
144
|
+
return locations.map((loc) => ({ ...loc, file: redactor(loc.file) }));
|
|
145
|
+
}
|
|
146
|
+
function redactIssue(issue, scopedLocations, redactor) {
|
|
147
|
+
const redactedLocations = redactLocations(scopedLocations, redactor);
|
|
148
|
+
const redactedIssue = {
|
|
149
|
+
...issue,
|
|
150
|
+
...(scopedLocations.length > 0 || issue.locations ? { locations: redactedLocations } : {}),
|
|
151
|
+
};
|
|
152
|
+
if (!redactor)
|
|
153
|
+
return redactedIssue;
|
|
154
|
+
const textLocations = issue.locations ?? scopedLocations;
|
|
155
|
+
const replacements = textLocations
|
|
156
|
+
.filter((loc) => loc.file)
|
|
157
|
+
.map((loc) => [loc.file, redactor(loc.file)]);
|
|
158
|
+
redactedIssue.title = redactText(redactedIssue.title, replacements, redactor);
|
|
159
|
+
redactedIssue.description = redactText(redactedIssue.description, replacements, redactor);
|
|
160
|
+
if (redactedIssue.suggestedAction) {
|
|
161
|
+
redactedIssue.suggestedAction = {
|
|
162
|
+
...redactedIssue.suggestedAction,
|
|
163
|
+
summary: redactText(redactedIssue.suggestedAction.summary, replacements, redactor),
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
return redactedIssue;
|
|
167
|
+
}
|
|
168
|
+
function redactText(text, replacements, redactor) {
|
|
169
|
+
let out = text;
|
|
170
|
+
const ordered = [...replacements].sort((a, b) => b[0].length - a[0].length);
|
|
171
|
+
for (const [filePath, label] of ordered) {
|
|
172
|
+
out = out.replace(pathReferenceRegExp(filePath), label);
|
|
173
|
+
}
|
|
174
|
+
if (redactor)
|
|
175
|
+
out = redactUnmappedPathTokens(out, redactor);
|
|
176
|
+
return out;
|
|
177
|
+
}
|
|
178
|
+
const TEXT_PATH_TOKEN_PATTERN = /(?:[A-Za-z]:[\\/]|\/|\.{1,2}[\\/])?(?:[A-Za-z0-9._@-]+[\\/])+[A-Za-z0-9._@-]+\.(?:ts|tsx|js|jsx|mjs|cjs|mts|cts|py|go|java|rb|rs|php|cs|json|ya?ml|toml|md)(?=$|[\s'"()[\]{}<>.,;:!?#])/gi;
|
|
179
|
+
function redactUnmappedPathTokens(text, redactor) {
|
|
180
|
+
return text.replace(TEXT_PATH_TOKEN_PATTERN, (match, ...args) => {
|
|
181
|
+
const offset = args[args.length - 2];
|
|
182
|
+
if (isHttpUrlPathToken(text, offset))
|
|
183
|
+
return match;
|
|
184
|
+
return redactor(match);
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
function isHttpUrlPathToken(text, offset) {
|
|
188
|
+
const tokenStart = previousTokenStart(text, offset);
|
|
189
|
+
const prefix = text.slice(tokenStart, Math.min(text.length, offset + 2)).toLowerCase();
|
|
190
|
+
return prefix.startsWith('http://') || prefix.startsWith('https://');
|
|
191
|
+
}
|
|
192
|
+
function previousTokenStart(text, offset) {
|
|
193
|
+
let index = offset;
|
|
194
|
+
while (index > 0 && !isPathTokenBoundary(text[index - 1]))
|
|
195
|
+
index -= 1;
|
|
196
|
+
return index;
|
|
197
|
+
}
|
|
198
|
+
function isPathTokenBoundary(char) {
|
|
199
|
+
return char === undefined || /[\s'"()[\]{}<>]/.test(char);
|
|
200
|
+
}
|
|
201
|
+
function pathReferenceRegExp(filePath) {
|
|
202
|
+
const normalized = filePath.replace(/\\/g, '/');
|
|
203
|
+
const pathPattern = normalized.split('/').map(escapeRegExp).join(String.raw `[\\/]`);
|
|
204
|
+
const tokenEnd = String.raw `(?=$|[\s'"()[\]{}<>.,;:!?#])`;
|
|
205
|
+
return new RegExp(String.raw `(?:\S+[\\/])*` + pathPattern + tokenEnd, 'g');
|
|
206
|
+
}
|
|
207
|
+
function escapeRegExp(value) {
|
|
208
|
+
return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
209
|
+
}
|
|
210
|
+
function redactFileEntry(file, redactor) {
|
|
211
|
+
if (!redactor)
|
|
212
|
+
return { ...file };
|
|
213
|
+
const relativePath = redactor(file.relativePath);
|
|
214
|
+
return {
|
|
215
|
+
...file,
|
|
216
|
+
relativePath,
|
|
217
|
+
absolutePath: relativePath,
|
|
218
|
+
directory: '.',
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
function countDirectories(files) {
|
|
222
|
+
const dirs = new Set(files.map((file) => file.directory || '.'));
|
|
223
|
+
return dirs.size;
|
|
224
|
+
}
|
|
225
|
+
function buildDirectoryTree(name, files) {
|
|
226
|
+
return {
|
|
227
|
+
name,
|
|
228
|
+
path: '.',
|
|
229
|
+
fileCount: files.length,
|
|
230
|
+
totalFileCount: files.length,
|
|
231
|
+
children: [],
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
//# sourceMappingURL=reportScope.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reportScope.js","sourceRoot":"","sources":["../../src/core/reportScope.ts"],"names":[],"mappings":"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"}
|
package/dist/core/review.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type { ReviewReport
|
|
1
|
+
import type { ReviewReport } from '../types/review.js';
|
|
2
|
+
export { selectReviewTier, shapeReviewForTier } from './reviewTier.js';
|
|
2
3
|
export interface ReviewOptions {
|
|
3
4
|
/** Base ref. Default: origin/main → main → origin/master → master → HEAD~1. */
|
|
4
5
|
base?: string;
|
|
@@ -29,27 +30,3 @@ export interface ReviewOptions {
|
|
|
29
30
|
* ok - otherwise
|
|
30
31
|
*/
|
|
31
32
|
export declare function computeReview(rootPath: string, options?: ReviewOptions): Promise<ReviewReport>;
|
|
32
|
-
/**
|
|
33
|
-
* 1.5+ — pick a review tier based on the caller's token budget.
|
|
34
|
-
*
|
|
35
|
-
* <3000 → 'verdict-only' (verdict + summary + totals)
|
|
36
|
-
* <7000 → 'summary' (verdict + summary + top files / top cycles / etc.)
|
|
37
|
-
* else → 'full' (everything)
|
|
38
|
-
*
|
|
39
|
-
* `0`, `undefined`, and any non-positive value all mean "no budget given"
|
|
40
|
-
* — the caller wants the full report. The tier names are stable (clients
|
|
41
|
-
* can read them off the response and key behavior off them).
|
|
42
|
-
*/
|
|
43
|
-
export declare function selectReviewTier(maxCostTokens: number | undefined): ReviewTier;
|
|
44
|
-
/**
|
|
45
|
-
* Reshape a full ReviewReport for the chosen tier. The caller passes a
|
|
46
|
-
* fully-populated report from `computeReview`; we return a plain object
|
|
47
|
-
* sized for the tier. Returning `Record<string, unknown>` (rather than
|
|
48
|
-
* narrowing the ReviewReport type) keeps the type contract simple for
|
|
49
|
-
* the dispatcher and avoids an over-engineered union.
|
|
50
|
-
*
|
|
51
|
-
* `unavailable` reports (no diff, missing base, etc.) pass through as-is
|
|
52
|
-
* — there's nothing to shape; the verdict + reason already convey
|
|
53
|
-
* everything the agent needs.
|
|
54
|
-
*/
|
|
55
|
-
export declare function shapeReviewForTier(report: ReviewReport, tier: ReviewTier): Record<string, unknown>;
|