projscan 4.3.0 → 4.4.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/CONTRIBUTING.md +5 -1
- package/PRIVACY.md +1 -0
- package/README.md +307 -234
- package/THIRD-PARTY-NOTICES.md +31 -31
- package/dist/analyzers/architectureCheck.js.map +1 -1
- package/dist/analyzers/crossPackageImportCheck.js +3 -2
- package/dist/analyzers/crossPackageImportCheck.js.map +1 -1
- package/dist/analyzers/deadCodeCheck.js +10 -2
- package/dist/analyzers/deadCodeCheck.js.map +1 -1
- package/dist/analyzers/dependencyRiskCheck.js +1 -5
- package/dist/analyzers/dependencyRiskCheck.js.map +1 -1
- package/dist/analyzers/eslintCheck.js +3 -1
- package/dist/analyzers/eslintCheck.js.map +1 -1
- package/dist/analyzers/prettierCheck.js +16 -3
- package/dist/analyzers/prettierCheck.js.map +1 -1
- package/dist/analyzers/pythonDependencyRiskCheck.js +4 -17
- package/dist/analyzers/pythonDependencyRiskCheck.js.map +1 -1
- package/dist/analyzers/pythonLinterCheck.js +2 -12
- package/dist/analyzers/pythonLinterCheck.js.map +1 -1
- package/dist/analyzers/securityCheck.js +26 -9
- package/dist/analyzers/securityCheck.js.map +1 -1
- package/dist/analyzers/supplyChainCheck.js +6 -2
- package/dist/analyzers/supplyChainCheck.js.map +1 -1
- package/dist/analyzers/testCheck.js +10 -1
- package/dist/analyzers/testCheck.js.map +1 -1
- package/dist/analyzers/unusedDependencyCheck.js +8 -8
- package/dist/analyzers/unusedDependencyCheck.js.map +1 -1
- package/dist/cli/_shared.d.ts +2 -1
- package/dist/cli/_shared.js +14 -2
- package/dist/cli/_shared.js.map +1 -1
- package/dist/cli/commands/agentBrief.js +7 -1
- package/dist/cli/commands/agentBrief.js.map +1 -1
- package/dist/cli/commands/analyze.js.map +1 -1
- package/dist/cli/commands/applyFix.js +1 -1
- package/dist/cli/commands/applyFix.js.map +1 -1
- package/dist/cli/commands/audit.js +4 -2
- package/dist/cli/commands/audit.js.map +1 -1
- package/dist/cli/commands/badge.js.map +1 -1
- package/dist/cli/commands/bugHunt.js +2 -2
- package/dist/cli/commands/bugHunt.js.map +1 -1
- package/dist/cli/commands/ci.js.map +1 -1
- package/dist/cli/commands/claim.js +3 -3
- package/dist/cli/commands/claim.js.map +1 -1
- package/dist/cli/commands/collision.js +4 -2
- package/dist/cli/commands/collision.js.map +1 -1
- package/dist/cli/commands/coordinate.js +4 -2
- package/dist/cli/commands/coordinate.js.map +1 -1
- package/dist/cli/commands/coupling.js.map +1 -1
- package/dist/cli/commands/coverage.js.map +1 -1
- package/dist/cli/commands/dataflow.js.map +1 -1
- package/dist/cli/commands/dependencies.js +1 -1
- package/dist/cli/commands/dependencies.js.map +1 -1
- package/dist/cli/commands/diff.js.map +1 -1
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/dogfood.js +30 -5
- package/dist/cli/commands/dogfood.js.map +1 -1
- package/dist/cli/commands/evidencePack.js.map +1 -1
- package/dist/cli/commands/explainIssue.js +1 -1
- package/dist/cli/commands/explainIssue.js.map +1 -1
- package/dist/cli/commands/feedback.js +19 -5
- package/dist/cli/commands/feedback.js.map +1 -1
- package/dist/cli/commands/file.js +1 -1
- package/dist/cli/commands/file.js.map +1 -1
- package/dist/cli/commands/fix.js.map +1 -1
- package/dist/cli/commands/fixSuggest.js +12 -4
- package/dist/cli/commands/fixSuggest.js.map +1 -1
- package/dist/cli/commands/hotspots.js.map +1 -1
- package/dist/cli/commands/impact.js +1 -1
- package/dist/cli/commands/impact.js.map +1 -1
- package/dist/cli/commands/init.js +13 -5
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/installHook.js +2 -2
- package/dist/cli/commands/installHook.js.map +1 -1
- package/dist/cli/commands/mcp.js.map +1 -1
- package/dist/cli/commands/memory.js +5 -2
- package/dist/cli/commands/memory.js.map +1 -1
- package/dist/cli/commands/mergeRisk.js +1 -1
- package/dist/cli/commands/mergeRisk.js.map +1 -1
- package/dist/cli/commands/missionProof.js +422 -3
- package/dist/cli/commands/missionProof.js.map +1 -1
- package/dist/cli/commands/outdated.js +1 -1
- package/dist/cli/commands/outdated.js.map +1 -1
- package/dist/cli/commands/plugin.js +10 -6
- package/dist/cli/commands/plugin.js.map +1 -1
- package/dist/cli/commands/prDiff.js +1 -1
- package/dist/cli/commands/prDiff.js.map +1 -1
- package/dist/cli/commands/preflight.js +1 -5
- package/dist/cli/commands/preflight.js.map +1 -1
- package/dist/cli/commands/privacyCheck.js +3 -1
- package/dist/cli/commands/privacyCheck.js.map +1 -1
- package/dist/cli/commands/qualityScorecard.js.map +1 -1
- package/dist/cli/commands/recipes.js.map +1 -1
- package/dist/cli/commands/regressionPlan.js.map +1 -1
- package/dist/cli/commands/releaseTrain.js.map +1 -1
- package/dist/cli/commands/review.js +1 -1
- package/dist/cli/commands/review.js.map +1 -1
- package/dist/cli/commands/route.js.map +1 -1
- package/dist/cli/commands/search.js +5 -2
- package/dist/cli/commands/search.js.map +1 -1
- package/dist/cli/commands/semanticGraph.js.map +1 -1
- package/dist/cli/commands/session.js +2 -2
- package/dist/cli/commands/session.js.map +1 -1
- package/dist/cli/commands/start.js +3 -1177
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/cli/commands/startAction.d.ts +36 -0
- package/dist/cli/commands/startAction.js +70 -0
- package/dist/cli/commands/startAction.js.map +1 -0
- package/dist/cli/commands/startConsole.d.ts +7 -0
- package/dist/cli/commands/startConsole.js +309 -0
- package/dist/cli/commands/startConsole.js.map +1 -0
- package/dist/cli/commands/startMissionBundle.d.ts +41 -0
- package/dist/cli/commands/startMissionBundle.js +645 -0
- package/dist/cli/commands/startMissionBundle.js.map +1 -0
- package/dist/cli/commands/startOutput.d.ts +31 -0
- package/dist/cli/commands/startOutput.js +232 -0
- package/dist/cli/commands/startOutput.js.map +1 -0
- package/dist/cli/commands/startShortcuts.d.ts +26 -0
- package/dist/cli/commands/startShortcuts.js +117 -0
- package/dist/cli/commands/startShortcuts.js.map +1 -0
- package/dist/cli/commands/telemetry.js +2 -1
- package/dist/cli/commands/telemetry.js.map +1 -1
- package/dist/cli/commands/trial.js +19 -4
- package/dist/cli/commands/trial.js.map +1 -1
- package/dist/cli/commands/understand.js +3 -1
- package/dist/cli/commands/understand.js.map +1 -1
- package/dist/cli/commands/upgrade.js.map +1 -1
- package/dist/cli/commands/watch.js +1 -1
- package/dist/cli/commands/watch.js.map +1 -1
- package/dist/cli/commands/workplan.js.map +1 -1
- package/dist/cli/commands/workspace.js +1 -1
- package/dist/cli/commands/workspace.js.map +1 -1
- package/dist/cli/commands/workspaces.js +1 -1
- package/dist/cli/commands/workspaces.js.map +1 -1
- package/dist/cli/index.js +2 -117
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/registerCommands.d.ts +4 -0
- package/dist/cli/registerCommands.js +125 -0
- package/dist/cli/registerCommands.js.map +1 -0
- package/dist/core/adoption.d.ts +2 -1
- package/dist/core/adoption.js +40 -13
- package/dist/core/adoption.js.map +1 -1
- package/dist/core/agentBrief.js +19 -6
- package/dist/core/agentBrief.js.map +1 -1
- package/dist/core/applyFix.js.map +1 -1
- package/dist/core/ast.js +30 -19
- package/dist/core/ast.js.map +1 -1
- package/dist/core/auditRunner.js.map +1 -1
- package/dist/core/bugHunt.js +119 -17
- package/dist/core/bugHunt.js.map +1 -1
- package/dist/core/claims.js +5 -2
- package/dist/core/claims.js.map +1 -1
- package/dist/core/codeGraph.js +10 -0
- package/dist/core/codeGraph.js.map +1 -1
- package/dist/core/codeGraphReexports.d.ts +9 -0
- package/dist/core/codeGraphReexports.js +59 -0
- package/dist/core/codeGraphReexports.js.map +1 -0
- package/dist/core/collisionDetector.js +14 -4
- package/dist/core/collisionDetector.js.map +1 -1
- package/dist/core/coordination.js +4 -6
- package/dist/core/coordination.js.map +1 -1
- package/dist/core/couplingAnalyzer.d.ts +2 -1
- package/dist/core/couplingAnalyzer.js.map +1 -1
- package/dist/core/coverageParser.js.map +1 -1
- package/dist/core/dataflow.js +11 -2
- package/dist/core/dataflow.js.map +1 -1
- package/dist/core/dataflowFilters.js +8 -3
- package/dist/core/dataflowFilters.js.map +1 -1
- package/dist/core/dependencyAnalyzer.js +4 -1
- package/dist/core/dependencyAnalyzer.js.map +1 -1
- package/dist/core/dogfood.d.ts +1 -1
- package/dist/core/dogfood.js +39 -5
- package/dist/core/dogfood.js.map +1 -1
- package/dist/core/embeddings.js.map +1 -1
- package/dist/core/evidenceComment.js +34 -12
- package/dist/core/evidenceComment.js.map +1 -1
- package/dist/core/explainIssue.js +1 -2
- package/dist/core/explainIssue.js.map +1 -1
- package/dist/core/feedback.d.ts +1 -1
- package/dist/core/feedback.js +15 -4
- package/dist/core/feedback.js.map +1 -1
- package/dist/core/fileInspector.js +8 -2
- package/dist/core/fileInspector.js.map +1 -1
- package/dist/core/fixFirst.d.ts +3 -1
- package/dist/core/fixFirst.js +17 -4
- package/dist/core/fixFirst.js.map +1 -1
- package/dist/core/fixSuggest.js +20 -12
- package/dist/core/fixSuggest.js.map +1 -1
- package/dist/core/frameworkDetector.js +5 -3
- package/dist/core/frameworkDetector.js.map +1 -1
- package/dist/core/frameworkSources.js +22 -2
- package/dist/core/frameworkSources.js.map +1 -1
- package/dist/core/graphCorpus.d.ts +1 -1
- package/dist/core/graphCorpus.js +9 -1
- package/dist/core/graphCorpus.js.map +1 -1
- package/dist/core/graphQuery.js.map +1 -1
- package/dist/core/hotspotAnalyzer.js +26 -6
- package/dist/core/hotspotAnalyzer.js.map +1 -1
- package/dist/core/impact.d.ts +1 -1
- package/dist/core/impact.js.map +1 -1
- package/dist/core/importGraph.js.map +1 -1
- package/dist/core/indexCache.js.map +1 -1
- package/dist/core/intent.d.ts +1 -1
- package/dist/core/intent.js +143 -46
- package/dist/core/intent.js.map +1 -1
- package/dist/core/intentRouter.js +5467 -445
- package/dist/core/intentRouter.js.map +1 -1
- package/dist/core/issueEngine.js +1 -1
- package/dist/core/issueEngine.js.map +1 -1
- package/dist/core/languageDetector.js +1 -9
- package/dist/core/languageDetector.js.map +1 -1
- package/dist/core/languages/cppAdapter.js +3 -1
- package/dist/core/languages/cppAdapter.js.map +1 -1
- package/dist/core/languages/cppExports.js +6 -1
- package/dist/core/languages/cppExports.js.map +1 -1
- package/dist/core/languages/cppFunctions.js +3 -1
- package/dist/core/languages/cppFunctions.js.map +1 -1
- package/dist/core/languages/csharpAdapter.js.map +1 -1
- package/dist/core/languages/csharpFunctions.js +3 -1
- package/dist/core/languages/csharpFunctions.js.map +1 -1
- package/dist/core/languages/csharpImports.js +2 -1
- package/dist/core/languages/csharpImports.js.map +1 -1
- package/dist/core/languages/goAdapter.js.map +1 -1
- package/dist/core/languages/goExports.js.map +1 -1
- package/dist/core/languages/goFunctions.js +9 -3
- package/dist/core/languages/goFunctions.js.map +1 -1
- package/dist/core/languages/javaAdapter.js +1 -2
- package/dist/core/languages/javaAdapter.js.map +1 -1
- package/dist/core/languages/javaFunctions.js +6 -2
- package/dist/core/languages/javaFunctions.js.map +1 -1
- package/dist/core/languages/javascriptAdapter.js +43 -8
- package/dist/core/languages/javascriptAdapter.js.map +1 -1
- package/dist/core/languages/kotlinAdapter.js +5 -2
- package/dist/core/languages/kotlinAdapter.js.map +1 -1
- package/dist/core/languages/kotlinFunctions.js +5 -6
- package/dist/core/languages/kotlinFunctions.js.map +1 -1
- package/dist/core/languages/kotlinImports.js +3 -1
- package/dist/core/languages/kotlinImports.js.map +1 -1
- package/dist/core/languages/kotlinManifests.js +7 -1
- package/dist/core/languages/kotlinManifests.js.map +1 -1
- package/dist/core/languages/phpAdapter.js +4 -1
- package/dist/core/languages/phpAdapter.js.map +1 -1
- package/dist/core/languages/phpExports.js.map +1 -1
- package/dist/core/languages/phpFunctions.js +18 -6
- package/dist/core/languages/phpFunctions.js.map +1 -1
- package/dist/core/languages/phpManifests.js.map +1 -1
- package/dist/core/languages/pythonAdapter.js.map +1 -1
- package/dist/core/languages/pythonFunctions.js +9 -3
- package/dist/core/languages/pythonFunctions.js.map +1 -1
- package/dist/core/languages/pythonManifests.js.map +1 -1
- package/dist/core/languages/rubyAdapter.js.map +1 -1
- package/dist/core/languages/rubyFunctions.js +6 -2
- package/dist/core/languages/rubyFunctions.js.map +1 -1
- package/dist/core/languages/rustAdapter.js.map +1 -1
- package/dist/core/languages/rustFunctions.js +6 -2
- package/dist/core/languages/rustFunctions.js.map +1 -1
- package/dist/core/languages/swiftAdapter.js +3 -1
- package/dist/core/languages/swiftAdapter.js.map +1 -1
- package/dist/core/languages/swiftCyclomatic.js.map +1 -1
- package/dist/core/languages/swiftFunctions.js +3 -1
- package/dist/core/languages/swiftFunctions.js.map +1 -1
- package/dist/core/languages/swiftImports.js.map +1 -1
- package/dist/core/mergeRisk.js +5 -1
- package/dist/core/mergeRisk.js.map +1 -1
- package/dist/core/missionOutcome.d.ts +1 -1
- package/dist/core/missionOutcome.js +9 -4
- package/dist/core/missionOutcome.js.map +1 -1
- package/dist/core/missionProof.d.ts +1 -1
- package/dist/core/missionProof.js +10 -39
- package/dist/core/missionProof.js.map +1 -1
- package/dist/core/missionProofBaseline.d.ts +10 -0
- package/dist/core/missionProofBaseline.js +137 -0
- package/dist/core/missionProofBaseline.js.map +1 -0
- package/dist/core/missionProofMarkdown.d.ts +2 -0
- package/dist/core/missionProofMarkdown.js +83 -0
- package/dist/core/missionProofMarkdown.js.map +1 -0
- package/dist/core/missionProofSummary.d.ts +2 -0
- package/dist/core/missionProofSummary.js +16 -0
- package/dist/core/missionProofSummary.js.map +1 -0
- package/dist/core/monorepo.d.ts +1 -1
- package/dist/core/monorepo.js +4 -2
- package/dist/core/monorepo.js.map +1 -1
- package/dist/core/onboarding.d.ts +2 -1
- package/dist/core/onboarding.js.map +1 -1
- package/dist/core/outdatedDetector.js +5 -1
- package/dist/core/outdatedDetector.js.map +1 -1
- package/dist/core/ownership.js +3 -1
- package/dist/core/ownership.js.map +1 -1
- package/dist/core/pathClassifiers.js.map +1 -1
- package/dist/core/pluginDx.js +2 -1
- package/dist/core/pluginDx.js.map +1 -1
- package/dist/core/pluginTrust.js +1 -3
- package/dist/core/pluginTrust.js.map +1 -1
- package/dist/core/plugins.js +5 -5
- package/dist/core/plugins.js.map +1 -1
- package/dist/core/prDiff.d.ts +1 -2
- package/dist/core/prDiff.js +5 -1
- package/dist/core/prDiff.js.map +1 -1
- package/dist/core/preflight.js +15 -6
- package/dist/core/preflight.js.map +1 -1
- package/dist/core/privacy.js.map +1 -1
- package/dist/core/qualityScorecard.d.ts +1 -1
- package/dist/core/qualityScorecard.js +43 -11
- package/dist/core/qualityScorecard.js.map +1 -1
- package/dist/core/regressionPlan.js +25 -7
- package/dist/core/regressionPlan.js.map +1 -1
- package/dist/core/releaseEvidence.js +41 -17
- package/dist/core/releaseEvidence.js.map +1 -1
- package/dist/core/releaseTrain.js +66 -38
- package/dist/core/releaseTrain.js.map +1 -1
- package/dist/core/repositoryScanner.js +1 -3
- package/dist/core/repositoryScanner.js.map +1 -1
- package/dist/core/review.d.ts +1 -1
- package/dist/core/review.js +72 -10
- package/dist/core/review.js.map +1 -1
- package/dist/core/reviewDataflow.js +7 -1
- package/dist/core/reviewDataflow.js.map +1 -1
- package/dist/core/reviewPublicSurface.d.ts +13 -0
- package/dist/core/reviewPublicSurface.js +134 -0
- package/dist/core/reviewPublicSurface.js.map +1 -0
- package/dist/core/roadmapCatalog.js +122 -23
- package/dist/core/roadmapCatalog.js.map +1 -1
- package/dist/core/searchIndex.js +124 -17
- package/dist/core/searchIndex.js.map +1 -1
- package/dist/core/semanticGraph.js.map +1 -1
- package/dist/core/semanticSearch.js +20 -4
- package/dist/core/semanticSearch.js.map +1 -1
- package/dist/core/session.js +1 -2
- package/dist/core/session.js.map +1 -1
- package/dist/core/sessionResources.js +6 -2
- package/dist/core/sessionResources.js.map +1 -1
- package/dist/core/start.d.ts +3 -9
- package/dist/core/start.js +22 -3231
- package/dist/core/start.js.map +1 -1
- package/dist/core/startAdoptionLoop.d.ts +2 -0
- package/dist/core/startAdoptionLoop.js +41 -0
- package/dist/core/startAdoptionLoop.js.map +1 -0
- package/dist/core/startEvidence.d.ts +5 -0
- package/dist/core/startEvidence.js +62 -0
- package/dist/core/startEvidence.js.map +1 -0
- package/dist/core/startExecutionPlan.d.ts +16 -0
- package/dist/core/startExecutionPlan.js +185 -0
- package/dist/core/startExecutionPlan.js.map +1 -0
- package/dist/core/startHarness.d.ts +3 -0
- package/dist/core/startHarness.js +47 -0
- package/dist/core/startHarness.js.map +1 -0
- package/dist/core/startIntentTargets.d.ts +24 -0
- package/dist/core/startIntentTargets.js +1106 -0
- package/dist/core/startIntentTargets.js.map +1 -0
- package/dist/core/startMissionControl.d.ts +16 -0
- package/dist/core/startMissionControl.js +145 -0
- package/dist/core/startMissionControl.js.map +1 -0
- package/dist/core/startMissionPolicy.d.ts +19 -0
- package/dist/core/startMissionPolicy.js +246 -0
- package/dist/core/startMissionPolicy.js.map +1 -0
- package/dist/core/startMode.d.ts +11 -0
- package/dist/core/startMode.js +139 -0
- package/dist/core/startMode.js.map +1 -0
- package/dist/core/startOptions.d.ts +18 -0
- package/dist/core/startOptions.js +29 -0
- package/dist/core/startOptions.js.map +1 -0
- package/dist/core/startResume.d.ts +7 -0
- package/dist/core/startResume.js +468 -0
- package/dist/core/startResume.js.map +1 -0
- package/dist/core/startReviewGate.d.ts +11 -0
- package/dist/core/startReviewGate.js +200 -0
- package/dist/core/startReviewGate.js.map +1 -0
- package/dist/core/startRouteActions.d.ts +7 -0
- package/dist/core/startRouteActions.js +497 -0
- package/dist/core/startRouteActions.js.map +1 -0
- package/dist/core/startRunbook.d.ts +24 -0
- package/dist/core/startRunbook.js +271 -0
- package/dist/core/startRunbook.js.map +1 -0
- package/dist/core/startSuccessCriteria.d.ts +14 -0
- package/dist/core/startSuccessCriteria.js +497 -0
- package/dist/core/startSuccessCriteria.js.map +1 -0
- package/dist/core/taint.js +12 -3
- package/dist/core/taint.js.map +1 -1
- package/dist/core/telemetry.js +19 -5
- package/dist/core/telemetry.js.map +1 -1
- package/dist/core/trial.d.ts +1 -1
- package/dist/core/trial.js +15 -6
- package/dist/core/trial.js.map +1 -1
- package/dist/core/understand.d.ts +1 -1
- package/dist/core/understand.js +165 -51
- package/dist/core/understand.js.map +1 -1
- package/dist/core/upgradePreview.js +1 -1
- package/dist/core/upgradePreview.js.map +1 -1
- package/dist/core/watcher.js +18 -3
- package/dist/core/watcher.js.map +1 -1
- package/dist/core/workplan.js +87 -17
- package/dist/core/workplan.js.map +1 -1
- package/dist/core/workspace.js.map +1 -1
- package/dist/index.d.ts +12 -9
- package/dist/index.js +10 -7
- package/dist/index.js.map +1 -1
- package/dist/mcp/pagination.js.map +1 -1
- package/dist/mcp/prompts.js +28 -20
- package/dist/mcp/prompts.js.map +1 -1
- package/dist/mcp/server.js +6 -74
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/serverPayload.d.ts +13 -0
- package/dist/mcp/serverPayload.js +61 -0
- package/dist/mcp/serverPayload.js.map +1 -0
- package/dist/mcp/tokenBudget.js.map +1 -1
- package/dist/mcp/tools/_shared.js.map +1 -1
- package/dist/mcp/tools/agentBrief.js +7 -1
- package/dist/mcp/tools/agentBrief.js.map +1 -1
- package/dist/mcp/tools/applyFix.js +1 -1
- package/dist/mcp/tools/applyFix.js.map +1 -1
- package/dist/mcp/tools/audit.js.map +1 -1
- package/dist/mcp/tools/bugHunt.js +2 -2
- package/dist/mcp/tools/bugHunt.js.map +1 -1
- package/dist/mcp/tools/claim.js +8 -3
- package/dist/mcp/tools/claim.js.map +1 -1
- package/dist/mcp/tools/collision.js +3 -1
- package/dist/mcp/tools/collision.js.map +1 -1
- package/dist/mcp/tools/coordinate.js.map +1 -1
- package/dist/mcp/tools/coordinateWatch.js +5 -2
- package/dist/mcp/tools/coordinateWatch.js.map +1 -1
- package/dist/mcp/tools/costSummary.js.map +1 -1
- package/dist/mcp/tools/coupling.js.map +1 -1
- package/dist/mcp/tools/coverage.js.map +1 -1
- package/dist/mcp/tools/dataflow.js.map +1 -1
- package/dist/mcp/tools/dependencies.js +4 -1
- package/dist/mcp/tools/dependencies.js.map +1 -1
- package/dist/mcp/tools/doctor.js.map +1 -1
- package/dist/mcp/tools/explainIssue.js +4 -1
- package/dist/mcp/tools/explainIssue.js.map +1 -1
- package/dist/mcp/tools/fixSuggest.js +5 -2
- package/dist/mcp/tools/fixSuggest.js.map +1 -1
- package/dist/mcp/tools/hotspots.js +4 -1
- package/dist/mcp/tools/hotspots.js.map +1 -1
- package/dist/mcp/tools/impact.js +10 -3
- package/dist/mcp/tools/impact.js.map +1 -1
- package/dist/mcp/tools/mergeRisk.js.map +1 -1
- package/dist/mcp/tools/plugin.js +6 -1
- package/dist/mcp/tools/plugin.js.map +1 -1
- package/dist/mcp/tools/prDiff.js.map +1 -1
- package/dist/mcp/tools/preflight.js +1 -5
- package/dist/mcp/tools/preflight.js.map +1 -1
- package/dist/mcp/tools/review.js.map +1 -1
- package/dist/mcp/tools/reviewWatch.d.ts +1 -1
- package/dist/mcp/tools/reviewWatch.js +9 -9
- package/dist/mcp/tools/reviewWatch.js.map +1 -1
- package/dist/mcp/tools/route.js +1 -1
- package/dist/mcp/tools/route.js.map +1 -1
- package/dist/mcp/tools/search.js.map +1 -1
- package/dist/mcp/tools/semanticGraph.js +8 -2
- package/dist/mcp/tools/semanticGraph.js.map +1 -1
- package/dist/mcp/tools/start.js.map +1 -1
- package/dist/mcp/tools/structure.js +7 -1
- package/dist/mcp/tools/structure.js.map +1 -1
- package/dist/mcp/tools/understand.js.map +1 -1
- package/dist/mcp/tools/workspaceGraph.js +10 -1
- package/dist/mcp/tools/workspaceGraph.js.map +1 -1
- package/dist/mcp/tools.js +3 -1
- package/dist/mcp/tools.js.map +1 -1
- package/dist/projscan-sbom.cdx.json +2136 -904
- package/dist/reporters/consoleAnalysisReporter.d.ts +2 -0
- package/dist/reporters/consoleAnalysisReporter.js +89 -0
- package/dist/reporters/consoleAnalysisReporter.js.map +1 -0
- package/dist/reporters/consoleArchitectureReporter.d.ts +3 -0
- package/dist/reporters/consoleArchitectureReporter.js +47 -0
- package/dist/reporters/consoleArchitectureReporter.js.map +1 -0
- package/dist/reporters/consoleAuditReporter.d.ts +2 -0
- package/dist/reporters/consoleAuditReporter.js +46 -0
- package/dist/reporters/consoleAuditReporter.js.map +1 -0
- package/dist/reporters/consoleCiReporter.d.ts +2 -0
- package/dist/reporters/consoleCiReporter.js +27 -0
- package/dist/reporters/consoleCiReporter.js.map +1 -0
- package/dist/reporters/consoleCouplingReporter.d.ts +2 -0
- package/dist/reporters/consoleCouplingReporter.js +53 -0
- package/dist/reporters/consoleCouplingReporter.js.map +1 -0
- package/dist/reporters/consoleCoverageReporter.d.ts +2 -0
- package/dist/reporters/consoleCoverageReporter.js +62 -0
- package/dist/reporters/consoleCoverageReporter.js.map +1 -0
- package/dist/reporters/consoleDependencyReporter.d.ts +2 -0
- package/dist/reporters/consoleDependencyReporter.js +64 -0
- package/dist/reporters/consoleDependencyReporter.js.map +1 -0
- package/dist/reporters/consoleDiffReporter.d.ts +2 -0
- package/dist/reporters/consoleDiffReporter.js +80 -0
- package/dist/reporters/consoleDiffReporter.js.map +1 -0
- package/dist/reporters/consoleExplanationReporter.d.ts +2 -0
- package/dist/reporters/consoleExplanationReporter.js +33 -0
- package/dist/reporters/consoleExplanationReporter.js.map +1 -0
- package/dist/reporters/consoleFileReporter.d.ts +2 -0
- package/dist/reporters/consoleFileReporter.js +133 -0
- package/dist/reporters/consoleFileReporter.js.map +1 -0
- package/dist/reporters/consoleFixGuidanceReporter.d.ts +8 -0
- package/dist/reporters/consoleFixGuidanceReporter.js +135 -0
- package/dist/reporters/consoleFixGuidanceReporter.js.map +1 -0
- package/dist/reporters/consoleHealthReporter.d.ts +13 -0
- package/dist/reporters/consoleHealthReporter.js +111 -0
- package/dist/reporters/consoleHealthReporter.js.map +1 -0
- package/dist/reporters/consoleHotspotReporter.d.ts +2 -0
- package/dist/reporters/consoleHotspotReporter.js +68 -0
- package/dist/reporters/consoleHotspotReporter.js.map +1 -0
- package/dist/reporters/consoleImpactReporter.d.ts +2 -0
- package/dist/reporters/consoleImpactReporter.js +65 -0
- package/dist/reporters/consoleImpactReporter.js.map +1 -0
- package/dist/reporters/consoleOutdatedReporter.d.ts +2 -0
- package/dist/reporters/consoleOutdatedReporter.js +54 -0
- package/dist/reporters/consoleOutdatedReporter.js.map +1 -0
- package/dist/reporters/consolePrDiffReporter.d.ts +2 -0
- package/dist/reporters/consolePrDiffReporter.js +75 -0
- package/dist/reporters/consolePrDiffReporter.js.map +1 -0
- package/dist/reporters/consoleReporter.d.ts +21 -38
- package/dist/reporters/consoleReporter.js +19 -1000
- package/dist/reporters/consoleReporter.js.map +1 -1
- package/dist/reporters/consoleReviewReporter.d.ts +2 -0
- package/dist/reporters/consoleReviewReporter.js +101 -0
- package/dist/reporters/consoleReviewReporter.js.map +1 -0
- package/dist/reporters/consoleUpgradeReporter.d.ts +2 -0
- package/dist/reporters/consoleUpgradeReporter.js +67 -0
- package/dist/reporters/consoleUpgradeReporter.js.map +1 -0
- package/dist/reporters/consoleWorkspaceReporter.d.ts +2 -0
- package/dist/reporters/consoleWorkspaceReporter.js +24 -0
- package/dist/reporters/consoleWorkspaceReporter.js.map +1 -0
- package/dist/reporters/htmlReporter.d.ts +2 -1
- package/dist/reporters/htmlReporter.js +9 -3
- package/dist/reporters/htmlReporter.js.map +1 -1
- package/dist/reporters/jsonReporter.d.ts +2 -1
- package/dist/reporters/jsonReporter.js.map +1 -1
- package/dist/reporters/markdownAnalysisReporter.d.ts +2 -0
- package/dist/reporters/markdownAnalysisReporter.js +40 -0
- package/dist/reporters/markdownAnalysisReporter.js.map +1 -0
- package/dist/reporters/markdownAuditReporter.d.ts +2 -0
- package/dist/reporters/markdownAuditReporter.js +27 -0
- package/dist/reporters/markdownAuditReporter.js.map +1 -0
- package/dist/reporters/markdownDependencyReporter.d.ts +2 -0
- package/dist/reporters/markdownDependencyReporter.js +33 -0
- package/dist/reporters/markdownDependencyReporter.js.map +1 -0
- package/dist/reporters/markdownDiffReporter.d.ts +2 -0
- package/dist/reporters/markdownDiffReporter.js +65 -0
- package/dist/reporters/markdownDiffReporter.js.map +1 -0
- package/dist/reporters/markdownFileReporter.d.ts +2 -0
- package/dist/reporters/markdownFileReporter.js +92 -0
- package/dist/reporters/markdownFileReporter.js.map +1 -0
- package/dist/reporters/markdownFixGuidanceReporter.d.ts +8 -0
- package/dist/reporters/markdownFixGuidanceReporter.js +95 -0
- package/dist/reporters/markdownFixGuidanceReporter.js.map +1 -0
- package/dist/reporters/markdownImpactReporter.d.ts +2 -0
- package/dist/reporters/markdownImpactReporter.js +52 -0
- package/dist/reporters/markdownImpactReporter.js.map +1 -0
- package/dist/reporters/markdownReporter.d.ts +10 -16
- package/dist/reporters/markdownReporter.js +9 -452
- package/dist/reporters/markdownReporter.js.map +1 -1
- package/dist/reporters/markdownReviewReporter.d.ts +2 -0
- package/dist/reporters/markdownReviewReporter.js +84 -0
- package/dist/reporters/markdownReviewReporter.js.map +1 -0
- package/dist/reporters/markdownUpgradeReporter.d.ts +2 -0
- package/dist/reporters/markdownUpgradeReporter.js +47 -0
- package/dist/reporters/markdownUpgradeReporter.js.map +1 -0
- package/dist/reporters/sarifReporter.js.map +1 -1
- package/dist/tool-manifest.json +4 -4
- package/dist/types/agentBrief.d.ts +48 -0
- package/dist/types/agentBrief.js +2 -0
- package/dist/types/agentBrief.js.map +1 -0
- package/dist/types/analysis.d.ts +32 -0
- package/dist/types/analysis.js +2 -0
- package/dist/types/analysis.js.map +1 -0
- package/dist/types/baseline.d.ts +59 -0
- package/dist/types/baseline.js +2 -0
- package/dist/types/baseline.js.map +1 -0
- package/dist/types/bugHunt.d.ts +41 -0
- package/dist/types/bugHunt.js +2 -0
- package/dist/types/bugHunt.js.map +1 -0
- package/dist/types/common.d.ts +34 -0
- package/dist/types/common.js +2 -0
- package/dist/types/common.js.map +1 -0
- package/dist/types/config.d.ts +56 -0
- package/dist/types/config.js +2 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/coupling.d.ts +40 -0
- package/dist/types/coupling.js +2 -0
- package/dist/types/coupling.js.map +1 -0
- package/dist/types/coverage.d.ts +32 -0
- package/dist/types/coverage.js +2 -0
- package/dist/types/coverage.js.map +1 -0
- package/dist/types/dependencyHealth.d.ts +61 -0
- package/dist/types/dependencyHealth.js +2 -0
- package/dist/types/dependencyHealth.js.map +1 -0
- package/dist/types/dogfood.d.ts +185 -0
- package/dist/types/dogfood.js +2 -0
- package/dist/types/dogfood.js.map +1 -0
- package/dist/types/evidencePack.d.ts +76 -0
- package/dist/types/evidencePack.js +2 -0
- package/dist/types/evidencePack.js.map +1 -0
- package/dist/types/fixes.d.ts +77 -0
- package/dist/types/fixes.js +2 -0
- package/dist/types/fixes.js.map +1 -0
- package/dist/types/graph.d.ts +80 -0
- package/dist/types/graph.js +2 -0
- package/dist/types/graph.js.map +1 -0
- package/dist/types/graphCorpus.d.ts +16 -0
- package/dist/types/graphCorpus.js +2 -0
- package/dist/types/graphCorpus.js.map +1 -0
- package/dist/types/hotspots.d.ts +42 -0
- package/dist/types/hotspots.js +2 -0
- package/dist/types/hotspots.js.map +1 -0
- package/dist/types/impact.d.ts +62 -0
- package/dist/types/impact.js +2 -0
- package/dist/types/impact.js.map +1 -0
- package/dist/types/inspection.d.ts +47 -0
- package/dist/types/inspection.js +2 -0
- package/dist/types/inspection.js.map +1 -0
- package/dist/types/mcp.d.ts +39 -0
- package/dist/types/mcp.js +2 -0
- package/dist/types/mcp.js.map +1 -0
- package/dist/types/pluginDx.d.ts +42 -0
- package/dist/types/pluginDx.js +2 -0
- package/dist/types/pluginDx.js.map +1 -0
- package/dist/types/prDiff.d.ts +41 -0
- package/dist/types/prDiff.js +2 -0
- package/dist/types/prDiff.js.map +1 -0
- package/dist/types/preflight.d.ts +122 -0
- package/dist/types/preflight.js +2 -0
- package/dist/types/preflight.js.map +1 -0
- package/dist/types/qualityScorecard.d.ts +34 -0
- package/dist/types/qualityScorecard.js +2 -0
- package/dist/types/qualityScorecard.js.map +1 -0
- package/dist/types/regressionPlan.d.ts +32 -0
- package/dist/types/regressionPlan.js +2 -0
- package/dist/types/regressionPlan.js.map +1 -0
- package/dist/types/releaseTrain.d.ts +37 -0
- package/dist/types/releaseTrain.js +2 -0
- package/dist/types/releaseTrain.js.map +1 -0
- package/dist/types/review.d.ts +203 -0
- package/dist/types/review.js +2 -0
- package/dist/types/review.js.map +1 -0
- package/dist/types/reviewContract.d.ts +9 -0
- package/dist/types/reviewContract.js +2 -0
- package/dist/types/reviewContract.js.map +1 -0
- package/dist/types/scanning.d.ts +111 -0
- package/dist/types/scanning.js +2 -0
- package/dist/types/scanning.js.map +1 -0
- package/dist/types/session.d.ts +42 -0
- package/dist/types/session.js +2 -0
- package/dist/types/session.js.map +1 -0
- package/dist/types/start.d.ts +437 -0
- package/dist/types/start.js +2 -0
- package/dist/types/start.js.map +1 -0
- package/dist/types/trial.d.ts +27 -0
- package/dist/types/trial.js +2 -0
- package/dist/types/trial.js.map +1 -0
- package/dist/types/understand.d.ts +153 -0
- package/dist/types/understand.js +2 -0
- package/dist/types/understand.js.map +1 -0
- package/dist/types/workplan.d.ts +67 -0
- package/dist/types/workplan.js +2 -0
- package/dist/types/workplan.js.map +1 -0
- package/dist/types/workplanHandoff.d.ts +11 -0
- package/dist/types/workplanHandoff.js +2 -0
- package/dist/types/workplanHandoff.js.map +1 -0
- package/dist/types/workspace.d.ts +18 -0
- package/dist/types/workspace.js +2 -0
- package/dist/types/workspace.js.map +1 -0
- package/dist/types.d.ts +34 -2348
- package/dist/types.js +0 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/banner.js +15 -6
- package/dist/utils/banner.js.map +1 -1
- package/dist/utils/baseline.js +11 -9
- package/dist/utils/baseline.js.map +1 -1
- package/dist/utils/changedFiles.js +1 -1
- package/dist/utils/changedFiles.js.map +1 -1
- package/dist/utils/config.d.ts +2 -1
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/formatSupport.d.ts +2 -2
- package/dist/utils/formatSupport.js +8 -2
- package/dist/utils/formatSupport.js.map +1 -1
- package/dist/utils/packageJsonLocator.js.map +1 -1
- package/docs/GUIDE.md +209 -147
- package/docs/PLUGIN-GALLERY.md +9 -1
- package/docs/ROADMAP.md +69 -68
- package/docs/demos/projscan-4-1-demo.html +46 -79
- package/docs/demos/projscan-mission-control.tape +13 -0
- package/docs/demos/projscan-mission-proof.tape +25 -0
- package/docs/examples/plugins/graph-context.mjs +1 -2
- package/docs/examples/plugins/security-sensitive-files.mjs +2 -1
- package/docs/projscan-mission-control.gif +0 -0
- package/docs/projscan-mission-proof.gif +0 -0
- package/package.json +17 -5
- package/scripts/capture-vhs-demos.mjs +80 -0
package/dist/types.d.ts
CHANGED
|
@@ -1,2348 +1,34 @@
|
|
|
1
|
-
export
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
}
|
|
10
|
-
export
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
}
|
|
16
|
-
export
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
}
|
|
23
|
-
export
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
}
|
|
30
|
-
export
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
}
|
|
34
|
-
export
|
|
35
|
-
name: string;
|
|
36
|
-
fileCount: number;
|
|
37
|
-
percentage: number;
|
|
38
|
-
extensions: string[];
|
|
39
|
-
}
|
|
40
|
-
export interface FrameworkResult {
|
|
41
|
-
frameworks: DetectedFramework[];
|
|
42
|
-
buildTools: string[];
|
|
43
|
-
packageManager: 'npm' | 'yarn' | 'pnpm' | 'unknown';
|
|
44
|
-
}
|
|
45
|
-
export interface DetectedFramework {
|
|
46
|
-
name: string;
|
|
47
|
-
version?: string;
|
|
48
|
-
category: 'frontend' | 'backend' | 'testing' | 'bundler' | 'css' | 'other';
|
|
49
|
-
confidence: 'high' | 'medium' | 'low';
|
|
50
|
-
}
|
|
51
|
-
export interface DependencyReport {
|
|
52
|
-
totalDependencies: number;
|
|
53
|
-
totalDevDependencies: number;
|
|
54
|
-
dependencies: Record<string, string>;
|
|
55
|
-
devDependencies: Record<string, string>;
|
|
56
|
-
risks: DependencyRisk[];
|
|
57
|
-
licenses?: DependencyLicenseSummary;
|
|
58
|
-
sizes?: DependencySizeSummary;
|
|
59
|
-
/**
|
|
60
|
-
* Per-workspace breakdown when scanning a monorepo (0.13.0+). Absent for
|
|
61
|
-
* single-package repos. The top-level `totalDependencies`,
|
|
62
|
-
* `totalDevDependencies`, `dependencies`, `devDependencies`, and `risks`
|
|
63
|
-
* fields aggregate across all workspaces (root manifest + each package).
|
|
64
|
-
* For per-package detail, read this array.
|
|
65
|
-
*/
|
|
66
|
-
byWorkspace?: Array<{
|
|
67
|
-
workspace: string;
|
|
68
|
-
relativePath: string;
|
|
69
|
-
isRoot: boolean;
|
|
70
|
-
totalDependencies: number;
|
|
71
|
-
totalDevDependencies: number;
|
|
72
|
-
risks: DependencyRisk[];
|
|
73
|
-
}>;
|
|
74
|
-
}
|
|
75
|
-
export interface DependencyLicenseEntry {
|
|
76
|
-
name: string;
|
|
77
|
-
version: string;
|
|
78
|
-
scope: 'production' | 'development';
|
|
79
|
-
license: string | null;
|
|
80
|
-
workspace?: string;
|
|
81
|
-
}
|
|
82
|
-
export interface DependencyLicenseSummary {
|
|
83
|
-
packages: DependencyLicenseEntry[];
|
|
84
|
-
byLicense: Record<string, number>;
|
|
85
|
-
unknown: string[];
|
|
86
|
-
copyleft: DependencyLicenseEntry[];
|
|
87
|
-
noticeCandidates: DependencyLicenseEntry[];
|
|
88
|
-
}
|
|
89
|
-
export interface DependencySizeEntry {
|
|
90
|
-
name: string;
|
|
91
|
-
version: string;
|
|
92
|
-
scope: 'production' | 'development';
|
|
93
|
-
bytes: number | null;
|
|
94
|
-
formatted: string;
|
|
95
|
-
installed: boolean;
|
|
96
|
-
workspace?: string;
|
|
97
|
-
}
|
|
98
|
-
export interface DependencySizeSummary {
|
|
99
|
-
packages: DependencySizeEntry[];
|
|
100
|
-
largest: DependencySizeEntry[];
|
|
101
|
-
totalBytes: number;
|
|
102
|
-
formattedTotal: string;
|
|
103
|
-
missing: string[];
|
|
104
|
-
}
|
|
105
|
-
export interface DependencyRisk {
|
|
106
|
-
name: string;
|
|
107
|
-
reason: string;
|
|
108
|
-
severity: 'low' | 'medium' | 'high';
|
|
109
|
-
/** Workspace package name when found in a monorepo workspace manifest. Absent for the root. */
|
|
110
|
-
workspace?: string;
|
|
111
|
-
}
|
|
112
|
-
export type IssueSeverity = 'info' | 'warning' | 'error';
|
|
113
|
-
export interface IssueLocation {
|
|
114
|
-
file: string;
|
|
115
|
-
line?: number;
|
|
116
|
-
column?: number;
|
|
117
|
-
endLine?: number;
|
|
118
|
-
endColumn?: number;
|
|
119
|
-
}
|
|
120
|
-
export interface Issue {
|
|
121
|
-
id: string;
|
|
122
|
-
title: string;
|
|
123
|
-
description: string;
|
|
124
|
-
severity: IssueSeverity;
|
|
125
|
-
category: string;
|
|
126
|
-
fixAvailable: boolean;
|
|
127
|
-
fixId?: string;
|
|
128
|
-
locations?: IssueLocation[];
|
|
129
|
-
/**
|
|
130
|
-
* One-line hint shown inline in projscan_doctor output (0.14.0+). Points
|
|
131
|
-
* at the fix-suggest pipeline. Absent when no template matches the issue.
|
|
132
|
-
*/
|
|
133
|
-
suggestedAction?: {
|
|
134
|
-
summary: string;
|
|
135
|
-
};
|
|
136
|
-
}
|
|
137
|
-
/**
|
|
138
|
-
* Structured action prompt the agent can paste into its plan. Returned by
|
|
139
|
-
* projscan_fix_suggest. projscan does not run an LLM - this is rule-driven
|
|
140
|
-
* guidance with the issue, the location, and a one-paragraph instruction
|
|
141
|
-
* the agent (LLM) is expected to act on.
|
|
142
|
-
*/
|
|
143
|
-
export interface FixSuggestion {
|
|
144
|
-
/** Echoes the input issue id when matched. */
|
|
145
|
-
issueId: string;
|
|
146
|
-
/** Severity level passed through from the source issue. */
|
|
147
|
-
severity: IssueSeverity;
|
|
148
|
-
/** Issue category passed through. */
|
|
149
|
-
category: string;
|
|
150
|
-
/** One-line "what is wrong". */
|
|
151
|
-
headline: string;
|
|
152
|
-
/** 2-4 sentences of why this matters. Severity-anchored. */
|
|
153
|
-
why: string;
|
|
154
|
-
/** Affected locations (mirrors Issue.locations when known). */
|
|
155
|
-
where: IssueLocation[];
|
|
156
|
-
/** One-paragraph instruction for the driving agent. */
|
|
157
|
-
instruction: string;
|
|
158
|
-
/** Optional "verify the fix by..." note. */
|
|
159
|
-
suggestedTest?: string;
|
|
160
|
-
/** Optional related files (importers, peer rules) for context. */
|
|
161
|
-
relatedFiles?: string[];
|
|
162
|
-
/** Optional documentation links. */
|
|
163
|
-
references?: string[];
|
|
164
|
-
}
|
|
165
|
-
/**
|
|
166
|
-
* Markdown-rendered deep dive for a single issue. Returned by
|
|
167
|
-
* projscan_explain_issue. Includes the surrounding code excerpt and any
|
|
168
|
-
* git-log evidence of similar fixes already merged in this repo.
|
|
169
|
-
*/
|
|
170
|
-
export interface IssueExplanation {
|
|
171
|
-
issueId: string;
|
|
172
|
-
title: string;
|
|
173
|
-
severity: IssueSeverity;
|
|
174
|
-
category: string;
|
|
175
|
-
headline: string;
|
|
176
|
-
/** Source-code excerpt around the primary location. Empty when no location. */
|
|
177
|
-
excerpt: {
|
|
178
|
-
file: string;
|
|
179
|
-
startLine: number;
|
|
180
|
-
endLine: number;
|
|
181
|
-
lines: string[];
|
|
182
|
-
} | null;
|
|
183
|
-
/** Other open issues touching the same file (id + title pairs). */
|
|
184
|
-
relatedIssues: Array<{
|
|
185
|
-
id: string;
|
|
186
|
-
title: string;
|
|
187
|
-
}>;
|
|
188
|
-
/**
|
|
189
|
-
* Git log references where this issue id (or its rule prefix) appears in a
|
|
190
|
-
* commit message - hints at how teammates have addressed it before.
|
|
191
|
-
* Empty when none found or git history unavailable.
|
|
192
|
-
*/
|
|
193
|
-
similarFixes: Array<{
|
|
194
|
-
sha: string;
|
|
195
|
-
subject: string;
|
|
196
|
-
date: string;
|
|
197
|
-
}>;
|
|
198
|
-
/** The full FixSuggestion if a template matched; null otherwise. */
|
|
199
|
-
fix: FixSuggestion | null;
|
|
200
|
-
}
|
|
201
|
-
export interface Fix {
|
|
202
|
-
id: string;
|
|
203
|
-
title: string;
|
|
204
|
-
description: string;
|
|
205
|
-
issueId: string;
|
|
206
|
-
apply: (rootPath: string) => Promise<void>;
|
|
207
|
-
}
|
|
208
|
-
export interface FixResult {
|
|
209
|
-
fix: Fix;
|
|
210
|
-
success: boolean;
|
|
211
|
-
error?: string;
|
|
212
|
-
}
|
|
213
|
-
export interface FileExplanation {
|
|
214
|
-
filePath: string;
|
|
215
|
-
purpose: string;
|
|
216
|
-
imports: ImportInfo[];
|
|
217
|
-
exports: ExportInfo[];
|
|
218
|
-
potentialIssues: string[];
|
|
219
|
-
lineCount: number;
|
|
220
|
-
}
|
|
221
|
-
export interface ImportInfo {
|
|
222
|
-
source: string;
|
|
223
|
-
specifiers: string[];
|
|
224
|
-
isRelative: boolean;
|
|
225
|
-
}
|
|
226
|
-
export interface ExportInfo {
|
|
227
|
-
name: string;
|
|
228
|
-
type: 'function' | 'class' | 'variable' | 'type' | 'interface' | 'default' | 'unknown';
|
|
229
|
-
}
|
|
230
|
-
export interface ArchitectureLayer {
|
|
231
|
-
name: string;
|
|
232
|
-
technologies: string[];
|
|
233
|
-
directories: string[];
|
|
234
|
-
}
|
|
235
|
-
export interface AnalysisReport {
|
|
236
|
-
projectName: string;
|
|
237
|
-
rootPath: string;
|
|
238
|
-
scan: ScanResult;
|
|
239
|
-
languages: LanguageBreakdown;
|
|
240
|
-
frameworks: FrameworkResult;
|
|
241
|
-
dependencies: DependencyReport | null;
|
|
242
|
-
issues: Issue[];
|
|
243
|
-
timestamp: string;
|
|
244
|
-
}
|
|
245
|
-
export interface HealthScore {
|
|
246
|
-
score: number;
|
|
247
|
-
grade: 'A' | 'B' | 'C' | 'D' | 'F';
|
|
248
|
-
errors: number;
|
|
249
|
-
warnings: number;
|
|
250
|
-
infos: number;
|
|
251
|
-
}
|
|
252
|
-
export type PreflightMode = 'before_edit' | 'before_commit' | 'before_merge';
|
|
253
|
-
export type PreflightVerdict = 'proceed' | 'caution' | 'block';
|
|
254
|
-
export type PreflightReasonSource = 'doctor' | 'review' | 'taint' | 'session' | 'plugin' | 'supply-chain' | 'memory' | 'changed-files' | 'hotspots' | 'git' | 'format' | 'release' | 'coordination';
|
|
255
|
-
export interface PreflightReason {
|
|
256
|
-
severity: IssueSeverity;
|
|
257
|
-
source: PreflightReasonSource;
|
|
258
|
-
message: string;
|
|
259
|
-
file?: string;
|
|
260
|
-
issueId?: string;
|
|
261
|
-
tool?: string;
|
|
262
|
-
}
|
|
263
|
-
export interface PreflightRequiredCheck {
|
|
264
|
-
name: string;
|
|
265
|
-
status: 'pass' | 'warn' | 'fail' | 'unavailable';
|
|
266
|
-
reason?: string;
|
|
267
|
-
}
|
|
268
|
-
export interface PreflightSuggestedAction {
|
|
269
|
-
label: string;
|
|
270
|
-
command?: string;
|
|
271
|
-
tool?: string;
|
|
272
|
-
args?: Record<string, unknown>;
|
|
273
|
-
}
|
|
274
|
-
export interface PreflightReleaseScaleEvidence {
|
|
275
|
-
detected: boolean;
|
|
276
|
-
changedFiles: number;
|
|
277
|
-
threshold: number;
|
|
278
|
-
reviewVerdict?: ReviewReport['verdict'];
|
|
279
|
-
reviewSummary?: string;
|
|
280
|
-
concreteBlockers: string[];
|
|
281
|
-
explanation: string;
|
|
282
|
-
}
|
|
283
|
-
export interface PreflightEvidence {
|
|
284
|
-
health?: {
|
|
285
|
-
score: number;
|
|
286
|
-
grade: HealthScore['grade'];
|
|
287
|
-
errors: number;
|
|
288
|
-
warnings: number;
|
|
289
|
-
infos: number;
|
|
290
|
-
};
|
|
291
|
-
changedFiles?: {
|
|
292
|
-
available: boolean;
|
|
293
|
-
count: number;
|
|
294
|
-
files: string[];
|
|
295
|
-
reason?: string;
|
|
296
|
-
};
|
|
297
|
-
review?: {
|
|
298
|
-
available: boolean;
|
|
299
|
-
verdict?: ReviewReport['verdict'];
|
|
300
|
-
summary?: string;
|
|
301
|
-
reason?: string;
|
|
302
|
-
};
|
|
303
|
-
session?: {
|
|
304
|
-
kind?: 'remembered-session';
|
|
305
|
-
id: string;
|
|
306
|
-
touchedFiles: string[];
|
|
307
|
-
totalTouchedFiles?: number;
|
|
308
|
-
eventCount: number;
|
|
309
|
-
note?: string;
|
|
310
|
-
truncated?: boolean;
|
|
311
|
-
};
|
|
312
|
-
riskSources?: {
|
|
313
|
-
currentWorktree: {
|
|
314
|
-
kind: 'current-worktree';
|
|
315
|
-
available: boolean;
|
|
316
|
-
count: number;
|
|
317
|
-
files: string[];
|
|
318
|
-
baseRef: string | null;
|
|
319
|
-
reason?: string;
|
|
320
|
-
};
|
|
321
|
-
sessionMemory: {
|
|
322
|
-
kind: 'remembered-session';
|
|
323
|
-
id: string;
|
|
324
|
-
touchedFiles: string[];
|
|
325
|
-
totalTouchedFiles: number;
|
|
326
|
-
eventCount: number;
|
|
327
|
-
note: string;
|
|
328
|
-
truncated?: boolean;
|
|
329
|
-
};
|
|
330
|
-
};
|
|
331
|
-
hotspots?: {
|
|
332
|
-
touched: Array<{
|
|
333
|
-
file: string;
|
|
334
|
-
riskScore: number;
|
|
335
|
-
}>;
|
|
336
|
-
};
|
|
337
|
-
plugins?: {
|
|
338
|
-
enabled: boolean;
|
|
339
|
-
errorIssues: number;
|
|
340
|
-
warningIssues: number;
|
|
341
|
-
};
|
|
342
|
-
supplyChain?: {
|
|
343
|
-
errorIssues: number;
|
|
344
|
-
warningIssues: number;
|
|
345
|
-
};
|
|
346
|
-
releaseScale?: PreflightReleaseScaleEvidence;
|
|
347
|
-
coordination?: {
|
|
348
|
-
available: boolean;
|
|
349
|
-
readiness: 'clear' | 'caution' | 'conflicted';
|
|
350
|
-
worktreeCount: number;
|
|
351
|
-
collisions: {
|
|
352
|
-
high: number;
|
|
353
|
-
medium: number;
|
|
354
|
-
};
|
|
355
|
-
contendedClaims: number;
|
|
356
|
-
};
|
|
357
|
-
}
|
|
358
|
-
export interface PreflightReport {
|
|
359
|
-
schemaVersion: 1;
|
|
360
|
-
mode: PreflightMode;
|
|
361
|
-
verdict: PreflightVerdict;
|
|
362
|
-
summary: string;
|
|
363
|
-
reasons: PreflightReason[];
|
|
364
|
-
evidence: PreflightEvidence;
|
|
365
|
-
requiredChecks: PreflightRequiredCheck[];
|
|
366
|
-
suggestedNextActions: PreflightSuggestedAction[];
|
|
367
|
-
toolCalls: PreflightSuggestedAction[];
|
|
368
|
-
truncated?: boolean;
|
|
369
|
-
}
|
|
370
|
-
export type WorkplanMode = PreflightMode | 'refactor' | 'release' | 'bug_hunt' | 'hardening';
|
|
371
|
-
export type WorkplanPriority = 'p0' | 'p1' | 'p2';
|
|
372
|
-
export interface WorkplanEvidence {
|
|
373
|
-
source: PreflightReasonSource | 'coordination' | 'release' | 'verification' | 'graph';
|
|
374
|
-
message: string;
|
|
375
|
-
severity?: IssueSeverity;
|
|
376
|
-
file?: string;
|
|
377
|
-
issueId?: string;
|
|
378
|
-
tool?: string;
|
|
379
|
-
}
|
|
380
|
-
export interface WorkplanVerification {
|
|
381
|
-
commands: string[];
|
|
382
|
-
expected: string;
|
|
383
|
-
}
|
|
384
|
-
export interface FixFirstRecommendation {
|
|
385
|
-
id: string;
|
|
386
|
-
title: string;
|
|
387
|
-
source: string;
|
|
388
|
-
priority: WorkplanPriority;
|
|
389
|
-
whyFirst: string;
|
|
390
|
-
files: string[];
|
|
391
|
-
owner?: string;
|
|
392
|
-
commands: string[];
|
|
393
|
-
expected?: string;
|
|
394
|
-
}
|
|
395
|
-
export interface WorkplanTask {
|
|
396
|
-
id: string;
|
|
397
|
-
priority: WorkplanPriority;
|
|
398
|
-
title: string;
|
|
399
|
-
why: string;
|
|
400
|
-
evidence: WorkplanEvidence[];
|
|
401
|
-
files: string[];
|
|
402
|
-
owner?: string;
|
|
403
|
-
suggestedTools: string[];
|
|
404
|
-
verification: WorkplanVerification;
|
|
405
|
-
handoffText: string;
|
|
406
|
-
}
|
|
407
|
-
export interface WorkplanTopRisk extends WorkplanEvidence {
|
|
408
|
-
priority: WorkplanPriority;
|
|
409
|
-
owner?: string;
|
|
410
|
-
}
|
|
411
|
-
export interface WorkplanCoordination {
|
|
412
|
-
touchedFiles: string[];
|
|
413
|
-
conflicts: SessionConflict[];
|
|
414
|
-
recommendedNextAgent: string;
|
|
415
|
-
}
|
|
416
|
-
export interface WorkplanReport {
|
|
417
|
-
schemaVersion: 1;
|
|
418
|
-
mode: WorkplanMode;
|
|
419
|
-
verdict: PreflightVerdict;
|
|
420
|
-
summary: string;
|
|
421
|
-
topRisks: WorkplanTopRisk[];
|
|
422
|
-
tasks: WorkplanTask[];
|
|
423
|
-
fixFirst?: FixFirstRecommendation;
|
|
424
|
-
coordination: WorkplanCoordination;
|
|
425
|
-
suggestedNextActions: PreflightSuggestedAction[];
|
|
426
|
-
truncated?: boolean;
|
|
427
|
-
}
|
|
428
|
-
export interface ReleaseTrainTrack {
|
|
429
|
-
line: string;
|
|
430
|
-
theme: string;
|
|
431
|
-
outcome: string;
|
|
432
|
-
includedInPlan: boolean;
|
|
433
|
-
scope: string[];
|
|
434
|
-
successCriteria: string[];
|
|
435
|
-
}
|
|
436
|
-
export interface ReleaseTrainTask {
|
|
437
|
-
id: string;
|
|
438
|
-
priority: WorkplanPriority;
|
|
439
|
-
title: string;
|
|
440
|
-
why: string;
|
|
441
|
-
track: string;
|
|
442
|
-
files: string[];
|
|
443
|
-
verification: WorkplanVerification;
|
|
444
|
-
}
|
|
445
|
-
export interface ReleaseTrainReport {
|
|
446
|
-
schemaVersion: 1;
|
|
447
|
-
currentVersion: string | null;
|
|
448
|
-
plan: {
|
|
449
|
-
policy: 'product-readiness-plan';
|
|
450
|
-
lines: string[];
|
|
451
|
-
readOnly: true;
|
|
452
|
-
};
|
|
453
|
-
readiness: {
|
|
454
|
-
verdict: PreflightVerdict;
|
|
455
|
-
blockers: number;
|
|
456
|
-
cautions: number;
|
|
457
|
-
summary: string;
|
|
458
|
-
};
|
|
459
|
-
tracks: ReleaseTrainTrack[];
|
|
460
|
-
tasks: ReleaseTrainTask[];
|
|
461
|
-
suggestedNextActions: PreflightSuggestedAction[];
|
|
462
|
-
}
|
|
463
|
-
export type BugHuntVerdict = 'clean' | 'fix' | 'block';
|
|
464
|
-
export interface BugHuntFinding {
|
|
465
|
-
id: string;
|
|
466
|
-
priority: WorkplanPriority;
|
|
467
|
-
source: 'doctor' | 'preflight' | 'session' | 'hotspot' | 'verification';
|
|
468
|
-
title: string;
|
|
469
|
-
why: string;
|
|
470
|
-
files: string[];
|
|
471
|
-
evidence: WorkplanEvidence[];
|
|
472
|
-
suggestedTools: string[];
|
|
473
|
-
verification: WorkplanVerification;
|
|
474
|
-
}
|
|
475
|
-
export interface BugHuntReport {
|
|
476
|
-
schemaVersion: 1;
|
|
477
|
-
verdict: BugHuntVerdict;
|
|
478
|
-
summary: string;
|
|
479
|
-
health: HealthScore;
|
|
480
|
-
evidence: {
|
|
481
|
-
issueCounts: {
|
|
482
|
-
errors: number;
|
|
483
|
-
warnings: number;
|
|
484
|
-
infos: number;
|
|
485
|
-
};
|
|
486
|
-
hotspotCount: number;
|
|
487
|
-
preflightVerdict: PreflightVerdict;
|
|
488
|
-
touchedFiles: string[];
|
|
489
|
-
conflicts: number;
|
|
490
|
-
};
|
|
491
|
-
topSuspects: BugHuntFinding[];
|
|
492
|
-
fixQueue: BugHuntFinding[];
|
|
493
|
-
fixFirst?: FixFirstRecommendation;
|
|
494
|
-
verificationMatrix: Array<{
|
|
495
|
-
command: string;
|
|
496
|
-
reason: string;
|
|
497
|
-
expected: string;
|
|
498
|
-
}>;
|
|
499
|
-
truncated?: boolean;
|
|
500
|
-
}
|
|
501
|
-
export type EvidencePackVerdict = 'ready' | 'caution' | 'blocked';
|
|
502
|
-
export type EvidencePackArtifactStatus = 'ready' | 'caution' | 'blocked';
|
|
503
|
-
export interface EvidencePackArtifact {
|
|
504
|
-
id: string;
|
|
505
|
-
title: string;
|
|
506
|
-
status: EvidencePackArtifactStatus;
|
|
507
|
-
summary: string;
|
|
508
|
-
evidence: string[];
|
|
509
|
-
commands: string[];
|
|
510
|
-
}
|
|
511
|
-
export interface EvidencePackTopRisk {
|
|
512
|
-
priority: WorkplanPriority;
|
|
513
|
-
title: string;
|
|
514
|
-
files: string[];
|
|
515
|
-
owner?: string;
|
|
516
|
-
command: string;
|
|
517
|
-
}
|
|
518
|
-
export interface EvidencePackTeamRoute {
|
|
519
|
-
owner: string;
|
|
520
|
-
files: string[];
|
|
521
|
-
reason: string;
|
|
522
|
-
}
|
|
523
|
-
export interface EvidencePackTrustCalibration {
|
|
524
|
-
verdict: 'clean' | 'manual_review' | 'actual_defect';
|
|
525
|
-
summary: string;
|
|
526
|
-
concreteBlockers: string[];
|
|
527
|
-
manualReviewSignals: string[];
|
|
528
|
-
watchSignals: string[];
|
|
529
|
-
}
|
|
530
|
-
export interface EvidencePackPrSummary {
|
|
531
|
-
verdictLabel: string;
|
|
532
|
-
decision: string;
|
|
533
|
-
trust: EvidencePackTrustCalibration;
|
|
534
|
-
topRisks: EvidencePackTopRisk[];
|
|
535
|
-
teamRoutes: EvidencePackTeamRoute[];
|
|
536
|
-
ownershipSuggestion?: string;
|
|
537
|
-
fixFirst?: FixFirstRecommendation;
|
|
538
|
-
nextCommands: string[];
|
|
539
|
-
baselineTrend?: BaselineTrend;
|
|
540
|
-
}
|
|
541
|
-
export interface EvidencePackPrCommentValidationCheck {
|
|
542
|
-
id: string;
|
|
543
|
-
status: 'pass' | 'warn' | 'fail';
|
|
544
|
-
summary: string;
|
|
545
|
-
}
|
|
546
|
-
export interface EvidencePackPrCommentValidation {
|
|
547
|
-
status: 'pass' | 'warn' | 'fail';
|
|
548
|
-
checks: EvidencePackPrCommentValidationCheck[];
|
|
549
|
-
}
|
|
550
|
-
export interface EvidencePackReport {
|
|
551
|
-
schemaVersion: 1;
|
|
552
|
-
currentVersion: string | null;
|
|
553
|
-
readOnly: true;
|
|
554
|
-
verdict: EvidencePackVerdict;
|
|
555
|
-
summary: string;
|
|
556
|
-
train: {
|
|
557
|
-
lines: string[];
|
|
558
|
-
readiness: ReleaseTrainReport['readiness'];
|
|
559
|
-
};
|
|
560
|
-
approval: {
|
|
561
|
-
required: true;
|
|
562
|
-
recommendation: string;
|
|
563
|
-
blockingReasons: string[];
|
|
564
|
-
};
|
|
565
|
-
artifacts: EvidencePackArtifact[];
|
|
566
|
-
changelogEntries: string[];
|
|
567
|
-
websitePrompt?: string;
|
|
568
|
-
prComment?: string;
|
|
569
|
-
prCommentValidation?: EvidencePackPrCommentValidation;
|
|
570
|
-
prSummary?: EvidencePackPrSummary;
|
|
571
|
-
suggestedNextActions: PreflightSuggestedAction[];
|
|
572
|
-
}
|
|
573
|
-
export type RegressionPlanLevel = 'smoke' | 'focused' | 'full';
|
|
574
|
-
export type RegressionPlanVerdict = 'ready' | 'needs_tests' | 'blocked';
|
|
575
|
-
export interface RegressionPlanTarget {
|
|
576
|
-
id: string;
|
|
577
|
-
priority: WorkplanPriority;
|
|
578
|
-
source: 'baseline' | 'bug-hunt' | 'product-line' | 'preflight';
|
|
579
|
-
title: string;
|
|
580
|
-
why: string;
|
|
581
|
-
files: string[];
|
|
582
|
-
verification: WorkplanVerification;
|
|
583
|
-
}
|
|
584
|
-
export interface RegressionPlanReport {
|
|
585
|
-
schemaVersion: 1;
|
|
586
|
-
level: RegressionPlanLevel;
|
|
587
|
-
verdict: RegressionPlanVerdict;
|
|
588
|
-
summary: string;
|
|
589
|
-
releaseLines: string[];
|
|
590
|
-
evidence: {
|
|
591
|
-
healthScore: number;
|
|
592
|
-
bugHuntVerdict: BugHuntVerdict;
|
|
593
|
-
preflightVerdict: PreflightVerdict;
|
|
594
|
-
changedFiles: number;
|
|
595
|
-
touchedFiles: number;
|
|
596
|
-
};
|
|
597
|
-
targets: RegressionPlanTarget[];
|
|
598
|
-
commands: string[];
|
|
599
|
-
suggestedNextActions: PreflightSuggestedAction[];
|
|
600
|
-
truncated?: boolean;
|
|
601
|
-
}
|
|
602
|
-
export type AgentBriefIntent = 'next_agent' | 'bug_hunt' | 'release' | 'refactor' | 'hardening';
|
|
603
|
-
export interface AgentBriefItem {
|
|
604
|
-
id: string;
|
|
605
|
-
priority: WorkplanPriority;
|
|
606
|
-
title: string;
|
|
607
|
-
why: string;
|
|
608
|
-
files: string[];
|
|
609
|
-
commands: string[];
|
|
610
|
-
}
|
|
611
|
-
export interface AgentBriefGuardrail {
|
|
612
|
-
id: string;
|
|
613
|
-
label: string;
|
|
614
|
-
reason: string;
|
|
615
|
-
command: string;
|
|
616
|
-
}
|
|
617
|
-
export interface GraphEvidenceSummary {
|
|
618
|
-
schemaVersion: 1;
|
|
619
|
-
changedFiles?: number;
|
|
620
|
-
changedFunctions?: number;
|
|
621
|
-
totalFunctions: number;
|
|
622
|
-
totalPackages: number;
|
|
623
|
-
totalCallEdges: number;
|
|
624
|
-
dataflowRisks: number;
|
|
625
|
-
topPackages: string[];
|
|
626
|
-
}
|
|
627
|
-
export interface AgentBriefReport {
|
|
628
|
-
schemaVersion: 1;
|
|
629
|
-
intent: AgentBriefIntent;
|
|
630
|
-
summary: string;
|
|
631
|
-
health: HealthScore;
|
|
632
|
-
context: {
|
|
633
|
-
totalFiles: number;
|
|
634
|
-
totalDirectories: number;
|
|
635
|
-
topDirectories: Array<{
|
|
636
|
-
directory: string;
|
|
637
|
-
files: number;
|
|
638
|
-
}>;
|
|
639
|
-
touchedFiles: string[];
|
|
640
|
-
conflicts: number;
|
|
641
|
-
graph?: GraphEvidenceSummary;
|
|
642
|
-
coordinationHints: SessionCoordinationHint[];
|
|
643
|
-
};
|
|
644
|
-
focus: AgentBriefItem[];
|
|
645
|
-
guardrails: AgentBriefGuardrail[];
|
|
646
|
-
suggestedNextActions: PreflightSuggestedAction[];
|
|
647
|
-
truncated?: boolean;
|
|
648
|
-
}
|
|
649
|
-
export interface WorkplanHandoffPayload {
|
|
650
|
-
summary: string;
|
|
651
|
-
verdict: PreflightVerdict;
|
|
652
|
-
mode: WorkplanMode;
|
|
653
|
-
next: string[];
|
|
654
|
-
verificationCommands: string[];
|
|
655
|
-
coordination: WorkplanCoordination;
|
|
656
|
-
markdown: string;
|
|
657
|
-
}
|
|
658
|
-
export interface StartWorkflowRecommendation {
|
|
659
|
-
id: string;
|
|
660
|
-
name: string;
|
|
661
|
-
why: string;
|
|
662
|
-
commands: string[];
|
|
663
|
-
mcpTools: string[];
|
|
664
|
-
}
|
|
665
|
-
export interface StartRisk {
|
|
666
|
-
id: string;
|
|
667
|
-
priority: WorkplanPriority;
|
|
668
|
-
title: string;
|
|
669
|
-
source: string;
|
|
670
|
-
files: string[];
|
|
671
|
-
command: string;
|
|
672
|
-
}
|
|
673
|
-
export interface StartAdoptionGap {
|
|
674
|
-
id: string;
|
|
675
|
-
status: 'info' | 'warn' | 'fail';
|
|
676
|
-
title: string;
|
|
677
|
-
summary: string;
|
|
678
|
-
command?: string;
|
|
679
|
-
}
|
|
680
|
-
export interface StartAdoptionLoopMetric {
|
|
681
|
-
id: string;
|
|
682
|
-
label: string;
|
|
683
|
-
target: string;
|
|
684
|
-
command?: string;
|
|
685
|
-
}
|
|
686
|
-
export interface StartAdoptionLoop {
|
|
687
|
-
cadence: 'every_pr';
|
|
688
|
-
why: string;
|
|
689
|
-
metrics: StartAdoptionLoopMetric[];
|
|
690
|
-
nextCommands: string[];
|
|
691
|
-
}
|
|
692
|
-
export interface StartFirstTenMinutesStep {
|
|
693
|
-
id: string;
|
|
694
|
-
label: string;
|
|
695
|
-
why: string;
|
|
696
|
-
command: string;
|
|
697
|
-
}
|
|
698
|
-
export interface StartFirstTenMinutes {
|
|
699
|
-
title: string;
|
|
700
|
-
outcome: string;
|
|
701
|
-
commands: StartFirstTenMinutesStep[];
|
|
702
|
-
}
|
|
703
|
-
export type StartModeSource = 'explicit' | 'intent' | 'default';
|
|
704
|
-
export type StartMissionControlStatus = 'ready' | 'needs_setup' | 'needs_attention' | 'blocked';
|
|
705
|
-
export interface StartRoutedIntent {
|
|
706
|
-
intent: string;
|
|
707
|
-
category: string;
|
|
708
|
-
tool: string;
|
|
709
|
-
cli: string;
|
|
710
|
-
why: string;
|
|
711
|
-
example: string;
|
|
712
|
-
confidence: 'high' | 'medium' | 'low';
|
|
713
|
-
rank: number;
|
|
714
|
-
score: number;
|
|
715
|
-
matchedKeywords: string[];
|
|
716
|
-
}
|
|
717
|
-
export interface StartUnresolvedInput {
|
|
718
|
-
name: string;
|
|
719
|
-
placeholder: string;
|
|
720
|
-
sourceAction: string;
|
|
721
|
-
instruction: string;
|
|
722
|
-
}
|
|
723
|
-
export interface StartMissionResumeReference {
|
|
724
|
-
id: string;
|
|
725
|
-
phaseId: StartExecutionPhaseId;
|
|
726
|
-
kind: StartExecutionStepKind;
|
|
727
|
-
status: StartExecutionStatus;
|
|
728
|
-
label: string;
|
|
729
|
-
instruction?: string;
|
|
730
|
-
command?: string;
|
|
731
|
-
placeholder?: string;
|
|
732
|
-
}
|
|
733
|
-
export interface StartMissionToolCall {
|
|
734
|
-
tool: string;
|
|
735
|
-
args?: Record<string, unknown>;
|
|
736
|
-
}
|
|
737
|
-
export interface StartMissionProofToolCall extends StartMissionToolCall {
|
|
738
|
-
stepId: string;
|
|
739
|
-
command: string;
|
|
740
|
-
}
|
|
741
|
-
export interface StartMissionProofItem {
|
|
742
|
-
stepId: string;
|
|
743
|
-
status: StartExecutionStatus;
|
|
744
|
-
label: string;
|
|
745
|
-
command: string;
|
|
746
|
-
toolCall?: StartMissionToolCall;
|
|
747
|
-
}
|
|
748
|
-
export interface StartMissionInputBinding {
|
|
749
|
-
inputId: string;
|
|
750
|
-
label: string;
|
|
751
|
-
placeholder: string;
|
|
752
|
-
instruction: string;
|
|
753
|
-
followUpIds: string[];
|
|
754
|
-
}
|
|
755
|
-
export type StartMissionResumeChecklistItemKind = 'run_current' | 'resolve_input' | 'run_follow_up' | 'run_proof' | 'confirm_done';
|
|
756
|
-
export interface StartMissionResumeChecklistItem {
|
|
757
|
-
id: string;
|
|
758
|
-
kind: StartMissionResumeChecklistItemKind;
|
|
759
|
-
phaseId: StartExecutionPhaseId;
|
|
760
|
-
stepId: string;
|
|
761
|
-
status: StartExecutionStatus;
|
|
762
|
-
label: string;
|
|
763
|
-
command?: string;
|
|
764
|
-
tool?: string;
|
|
765
|
-
args?: Record<string, unknown>;
|
|
766
|
-
placeholder?: string;
|
|
767
|
-
instruction?: string;
|
|
768
|
-
blockedBy?: string[];
|
|
769
|
-
dependsOn?: string[];
|
|
770
|
-
unlocks?: string[];
|
|
771
|
-
followUpIds?: string[];
|
|
772
|
-
}
|
|
773
|
-
export interface StartMissionResumeFollowUp {
|
|
774
|
-
id: string;
|
|
775
|
-
phaseId: StartExecutionPhaseId;
|
|
776
|
-
kind: StartExecutionStepKind;
|
|
777
|
-
status: StartExecutionStatus;
|
|
778
|
-
label: string;
|
|
779
|
-
command?: string;
|
|
780
|
-
tool?: string;
|
|
781
|
-
args?: Record<string, unknown>;
|
|
782
|
-
blockedBy?: string[];
|
|
783
|
-
dependsOn?: string[];
|
|
784
|
-
}
|
|
785
|
-
export interface StartMissionResume {
|
|
786
|
-
currentStep: StartExecutionCursor;
|
|
787
|
-
status: StartExecutionStatus;
|
|
788
|
-
instruction: string;
|
|
789
|
-
prompt: string;
|
|
790
|
-
commandBlock?: string;
|
|
791
|
-
toolCall?: StartMissionToolCall;
|
|
792
|
-
followUps?: StartMissionResumeFollowUp[];
|
|
793
|
-
inputBindings?: StartMissionInputBinding[];
|
|
794
|
-
checklist?: StartMissionResumeChecklistItem[];
|
|
795
|
-
remainingProofItems?: StartMissionProofItem[];
|
|
796
|
-
remainingProofCommands?: string[];
|
|
797
|
-
remainingProofToolCalls?: StartMissionProofToolCall[];
|
|
798
|
-
unlocks?: StartMissionResumeReference[];
|
|
799
|
-
blockedBy?: StartMissionResumeReference[];
|
|
800
|
-
}
|
|
801
|
-
export interface StartMissionHandoff {
|
|
802
|
-
currentStep: StartExecutionCursor;
|
|
803
|
-
resume: StartMissionResume;
|
|
804
|
-
reviewGate: StartMissionReviewGate;
|
|
805
|
-
nextAction: PreflightSuggestedAction;
|
|
806
|
-
readyActions: PreflightSuggestedAction[];
|
|
807
|
-
needsInput: StartUnresolvedInput[];
|
|
808
|
-
doneWhen: string[];
|
|
809
|
-
readyProof: {
|
|
810
|
-
summary: string;
|
|
811
|
-
commands: string[];
|
|
812
|
-
toolCalls?: StartMissionProofToolCall[];
|
|
813
|
-
items?: StartMissionProofItem[];
|
|
814
|
-
};
|
|
815
|
-
}
|
|
816
|
-
export type StartExecutionPhaseId = 'next_action' | 'ready_now' | 'resolve_inputs' | 'follow_up' | 'proof' | 'done_when';
|
|
817
|
-
export type StartExecutionStatus = 'ready' | 'blocked' | 'pending';
|
|
818
|
-
export type StartExecutionStepKind = 'tool' | 'input' | 'proof' | 'criterion' | 'handoff';
|
|
819
|
-
export interface StartExecutionStep {
|
|
820
|
-
id: string;
|
|
821
|
-
kind: StartExecutionStepKind;
|
|
822
|
-
status: StartExecutionStatus;
|
|
823
|
-
label: string;
|
|
824
|
-
command?: string;
|
|
825
|
-
tool?: string;
|
|
826
|
-
args?: Record<string, unknown>;
|
|
827
|
-
instruction?: string;
|
|
828
|
-
placeholder?: string;
|
|
829
|
-
dependsOn?: string[];
|
|
830
|
-
blockedBy?: string[];
|
|
831
|
-
unlocks?: string[];
|
|
832
|
-
}
|
|
833
|
-
export interface StartExecutionPhase {
|
|
834
|
-
id: StartExecutionPhaseId;
|
|
835
|
-
title: string;
|
|
836
|
-
status: StartExecutionStatus;
|
|
837
|
-
steps: StartExecutionStep[];
|
|
838
|
-
}
|
|
839
|
-
export interface StartExecutionCursor {
|
|
840
|
-
phaseId: StartExecutionPhaseId;
|
|
841
|
-
stepId: string;
|
|
842
|
-
status: StartExecutionStatus;
|
|
843
|
-
kind: StartExecutionStepKind;
|
|
844
|
-
label: string;
|
|
845
|
-
command?: string;
|
|
846
|
-
tool?: string;
|
|
847
|
-
args?: Record<string, unknown>;
|
|
848
|
-
instruction?: string;
|
|
849
|
-
placeholder?: string;
|
|
850
|
-
blockedBy?: string[];
|
|
851
|
-
unlocks?: string[];
|
|
852
|
-
reason: string;
|
|
853
|
-
}
|
|
854
|
-
export interface StartExecutionPlan {
|
|
855
|
-
summary: string;
|
|
856
|
-
currentPhase: StartExecutionPhaseId;
|
|
857
|
-
cursor: StartExecutionCursor;
|
|
858
|
-
phases: StartExecutionPhase[];
|
|
859
|
-
}
|
|
860
|
-
export interface StartMissionRunbook {
|
|
861
|
-
title: string;
|
|
862
|
-
status: StartMissionControlStatus;
|
|
863
|
-
currentPhase: StartExecutionPhaseId;
|
|
864
|
-
currentStep: StartExecutionCursor;
|
|
865
|
-
resume: StartMissionResume;
|
|
866
|
-
readyCommandBlock: string;
|
|
867
|
-
blockedInputSummary?: string;
|
|
868
|
-
markdown: string;
|
|
869
|
-
}
|
|
870
|
-
export interface StartMissionReviewWorktree {
|
|
871
|
-
available: boolean;
|
|
872
|
-
clean: boolean;
|
|
873
|
-
changedFileCount: number;
|
|
874
|
-
files: string[];
|
|
875
|
-
baseRef: string | null;
|
|
876
|
-
summary: string;
|
|
877
|
-
reason?: string;
|
|
878
|
-
}
|
|
879
|
-
export interface StartMissionReviewProof {
|
|
880
|
-
summary: string;
|
|
881
|
-
commands: string[];
|
|
882
|
-
toolCalls?: StartMissionProofToolCall[];
|
|
883
|
-
items?: StartMissionProofItem[];
|
|
884
|
-
}
|
|
885
|
-
export type StartMissionReviewBlockedAction = 'next_slice' | 'release' | 'publish' | 'deploy' | 'push' | 'merge' | 'version_bump';
|
|
886
|
-
export interface StartMissionReviewPolicy {
|
|
887
|
-
approvalRequired: true;
|
|
888
|
-
blockedActions: StartMissionReviewBlockedAction[];
|
|
889
|
-
summary: string;
|
|
890
|
-
}
|
|
891
|
-
export interface StartMissionReviewDecision {
|
|
892
|
-
id: 'approve_next_slice' | 'request_changes' | 'review_version_candidate';
|
|
893
|
-
label: string;
|
|
894
|
-
description: string;
|
|
895
|
-
consequence: string;
|
|
896
|
-
reply: string;
|
|
897
|
-
}
|
|
898
|
-
export interface StartMissionReviewGate {
|
|
899
|
-
title: string;
|
|
900
|
-
required: true;
|
|
901
|
-
status: StartMissionControlStatus;
|
|
902
|
-
stopCondition: string;
|
|
903
|
-
reviewPrompt: string;
|
|
904
|
-
checklist: string[];
|
|
905
|
-
doneWhen: string[];
|
|
906
|
-
policy: StartMissionReviewPolicy;
|
|
907
|
-
decisions: StartMissionReviewDecision[];
|
|
908
|
-
commands: string[];
|
|
909
|
-
worktree: StartMissionReviewWorktree;
|
|
910
|
-
proof: StartMissionReviewProof;
|
|
911
|
-
markdown: string;
|
|
912
|
-
}
|
|
913
|
-
export type MissionRunStatus = 'not_run' | 'running' | 'passed' | 'failed' | 'unknown';
|
|
914
|
-
export interface MissionProofStatusRow {
|
|
915
|
-
id: string;
|
|
916
|
-
label?: string;
|
|
917
|
-
log?: string;
|
|
918
|
-
command?: string;
|
|
919
|
-
exitCode?: number;
|
|
920
|
-
}
|
|
921
|
-
export interface MissionReviewDecisionRecord {
|
|
922
|
-
decision: 'approve_next_slice' | 'request_changes' | 'review_version_candidate' | string;
|
|
923
|
-
reviewer?: string;
|
|
924
|
-
at?: string;
|
|
925
|
-
note?: string;
|
|
926
|
-
}
|
|
927
|
-
export interface MissionOutcome {
|
|
928
|
-
schemaVersion: 1;
|
|
929
|
-
available: boolean;
|
|
930
|
-
missionDir: string;
|
|
931
|
-
status: MissionRunStatus;
|
|
932
|
-
reason?: string;
|
|
933
|
-
nextAction?: string;
|
|
934
|
-
proof: {
|
|
935
|
-
completedCommands: number;
|
|
936
|
-
failedCommands: number;
|
|
937
|
-
reruns: number;
|
|
938
|
-
totalCommands?: number;
|
|
939
|
-
failedStep?: string;
|
|
940
|
-
failedLog?: string;
|
|
941
|
-
exitCode?: number;
|
|
942
|
-
rows: MissionProofStatusRow[];
|
|
943
|
-
};
|
|
944
|
-
review: {
|
|
945
|
-
decisions: MissionReviewDecisionRecord[];
|
|
946
|
-
approvals: number;
|
|
947
|
-
changeRequests: number;
|
|
948
|
-
versionCandidateReviews: number;
|
|
949
|
-
};
|
|
950
|
-
whatChanged: string[];
|
|
951
|
-
whatRemains: string[];
|
|
952
|
-
versionCandidate: {
|
|
953
|
-
recommendation: 'run_proof' | 'wait' | 'review_candidate' | 'do_not_cut';
|
|
954
|
-
summary: string;
|
|
955
|
-
};
|
|
956
|
-
resumePrompt: string;
|
|
957
|
-
}
|
|
958
|
-
export interface MissionProofBaselineRun {
|
|
959
|
-
id: string;
|
|
960
|
-
status: MissionRunStatus;
|
|
961
|
-
failedGates?: number;
|
|
962
|
-
reruns?: number;
|
|
963
|
-
minutesSpent?: number;
|
|
964
|
-
reviewerApprovals?: number;
|
|
965
|
-
}
|
|
966
|
-
export interface MissionProofTotals {
|
|
967
|
-
missions: number;
|
|
968
|
-
passed: number;
|
|
969
|
-
failed: number;
|
|
970
|
-
running: number;
|
|
971
|
-
notRun: number;
|
|
972
|
-
unavailable: number;
|
|
973
|
-
proofCompletionRate: number;
|
|
974
|
-
reruns: number;
|
|
975
|
-
failedGates: number;
|
|
976
|
-
reviewerApprovals: number;
|
|
977
|
-
}
|
|
978
|
-
export interface MissionProofReport {
|
|
979
|
-
schemaVersion: 1;
|
|
980
|
-
readOnly: true;
|
|
981
|
-
rootPath: string;
|
|
982
|
-
summary: string;
|
|
983
|
-
missionControl: {
|
|
984
|
-
missions: MissionOutcome[];
|
|
985
|
-
totals: MissionProofTotals;
|
|
986
|
-
};
|
|
987
|
-
baseline?: {
|
|
988
|
-
path: string;
|
|
989
|
-
runs: MissionProofBaselineRun[];
|
|
990
|
-
totals: MissionProofTotals & {
|
|
991
|
-
minutesSpent: number;
|
|
992
|
-
};
|
|
993
|
-
};
|
|
994
|
-
comparison?: {
|
|
995
|
-
completionRateDelta: number;
|
|
996
|
-
rerunsAvoided: number;
|
|
997
|
-
failedGatesAvoided: number;
|
|
998
|
-
minutesSaved: number;
|
|
999
|
-
};
|
|
1000
|
-
riskAvoided: string[];
|
|
1001
|
-
nextActions: PreflightSuggestedAction[];
|
|
1002
|
-
}
|
|
1003
|
-
export interface StartMissionTaskCard {
|
|
1004
|
-
title: string;
|
|
1005
|
-
status: StartMissionControlStatus;
|
|
1006
|
-
currentPhase: StartExecutionPhaseId;
|
|
1007
|
-
currentStep: StartExecutionCursor;
|
|
1008
|
-
markdown: string;
|
|
1009
|
-
}
|
|
1010
|
-
export interface StartMissionControl {
|
|
1011
|
-
intent?: string;
|
|
1012
|
-
status: StartMissionControlStatus;
|
|
1013
|
-
headline: string;
|
|
1014
|
-
whyNow: string;
|
|
1015
|
-
primaryAction: PreflightSuggestedAction;
|
|
1016
|
-
actionPlan: PreflightSuggestedAction[];
|
|
1017
|
-
readyActions: PreflightSuggestedAction[];
|
|
1018
|
-
routedIntent?: StartRoutedIntent;
|
|
1019
|
-
alternatives?: StartRoutedIntent[];
|
|
1020
|
-
unresolvedInputs: StartUnresolvedInput[];
|
|
1021
|
-
guardrails: PreflightSuggestedAction[];
|
|
1022
|
-
successCriteria: string[];
|
|
1023
|
-
proofSummary: string;
|
|
1024
|
-
proofCommands: string[];
|
|
1025
|
-
resume: StartMissionResume;
|
|
1026
|
-
handoff: StartMissionHandoff;
|
|
1027
|
-
executionPlan: StartExecutionPlan;
|
|
1028
|
-
runbook: StartMissionRunbook;
|
|
1029
|
-
reviewGate: StartMissionReviewGate;
|
|
1030
|
-
taskCard: StartMissionTaskCard;
|
|
1031
|
-
outcome?: MissionOutcome;
|
|
1032
|
-
handoffPrompt: string;
|
|
1033
|
-
}
|
|
1034
|
-
export interface StartReport {
|
|
1035
|
-
schemaVersion: 1;
|
|
1036
|
-
readOnly: true;
|
|
1037
|
-
rootPath: string;
|
|
1038
|
-
mode: WorkplanMode;
|
|
1039
|
-
modeSource: StartModeSource;
|
|
1040
|
-
modeReason: string;
|
|
1041
|
-
summary: string;
|
|
1042
|
-
setup: {
|
|
1043
|
-
overall: 'pass' | 'warn' | 'fail' | 'info';
|
|
1044
|
-
diagnostics: Array<{
|
|
1045
|
-
id: string;
|
|
1046
|
-
label: string;
|
|
1047
|
-
status: 'pass' | 'warn' | 'fail' | 'info';
|
|
1048
|
-
summary: string;
|
|
1049
|
-
detail?: string;
|
|
1050
|
-
command?: string;
|
|
1051
|
-
}>;
|
|
1052
|
-
};
|
|
1053
|
-
recommendedWorkflow: StartWorkflowRecommendation;
|
|
1054
|
-
firstTenMinutes: StartFirstTenMinutes;
|
|
1055
|
-
missionControl: StartMissionControl;
|
|
1056
|
-
coordinationHints: SessionCoordinationHint[];
|
|
1057
|
-
evidence: {
|
|
1058
|
-
workplanVerdict: PreflightVerdict;
|
|
1059
|
-
workplanSummary: string;
|
|
1060
|
-
qualityVerdict: QualityScorecardVerdict;
|
|
1061
|
-
qualitySummary: string;
|
|
1062
|
-
healthScore: number;
|
|
1063
|
-
mcpReady: boolean;
|
|
1064
|
-
riskSources: {
|
|
1065
|
-
currentWorktree: {
|
|
1066
|
-
kind: 'current-worktree';
|
|
1067
|
-
available: boolean;
|
|
1068
|
-
count: number;
|
|
1069
|
-
files: string[];
|
|
1070
|
-
baseRef: string | null;
|
|
1071
|
-
reason?: string;
|
|
1072
|
-
};
|
|
1073
|
-
sessionMemory: {
|
|
1074
|
-
kind: 'remembered-session';
|
|
1075
|
-
touchedFiles: string[];
|
|
1076
|
-
totalTouchedFiles: number;
|
|
1077
|
-
note: string;
|
|
1078
|
-
truncated?: boolean;
|
|
1079
|
-
};
|
|
1080
|
-
};
|
|
1081
|
-
};
|
|
1082
|
-
topRisks: StartRisk[];
|
|
1083
|
-
fixFirst?: FixFirstRecommendation;
|
|
1084
|
-
adoptionGaps: StartAdoptionGap[];
|
|
1085
|
-
adoptionLoop?: StartAdoptionLoop;
|
|
1086
|
-
nextActions: PreflightSuggestedAction[];
|
|
1087
|
-
handoff?: WorkplanHandoffPayload;
|
|
1088
|
-
truncated?: boolean;
|
|
1089
|
-
}
|
|
1090
|
-
export type DogfoodRepoStatus = 'pass' | 'warn' | 'fail';
|
|
1091
|
-
export interface DogfoodFeedbackResponse {
|
|
1092
|
-
repo?: string;
|
|
1093
|
-
pr?: string;
|
|
1094
|
-
reviewer?: string;
|
|
1095
|
-
useful?: boolean;
|
|
1096
|
-
minutesSaved?: number;
|
|
1097
|
-
preventedBadEdit?: boolean;
|
|
1098
|
-
ownerRoutingClear?: boolean;
|
|
1099
|
-
nextCommandClear?: boolean;
|
|
1100
|
-
falsePositiveRules?: string[];
|
|
1101
|
-
missingSignals?: string[];
|
|
1102
|
-
noisyFindings?: string[];
|
|
1103
|
-
note?: string;
|
|
1104
|
-
}
|
|
1105
|
-
export interface DogfoodFeedbackInput {
|
|
1106
|
-
schemaVersion?: 1;
|
|
1107
|
-
questions?: string[];
|
|
1108
|
-
responses: DogfoodFeedbackResponse[];
|
|
1109
|
-
}
|
|
1110
|
-
export interface FeedbackTemplateResult extends DogfoodFeedbackInput {
|
|
1111
|
-
schemaVersion: 1;
|
|
1112
|
-
path: string;
|
|
1113
|
-
createdAt: string;
|
|
1114
|
-
instructions: string[];
|
|
1115
|
-
}
|
|
1116
|
-
export interface FeedbackSummaryReport {
|
|
1117
|
-
schemaVersion: 1;
|
|
1118
|
-
path: string;
|
|
1119
|
-
responses: number;
|
|
1120
|
-
usefulResponses: number;
|
|
1121
|
-
distinctRepos: number;
|
|
1122
|
-
distinctPrs: number;
|
|
1123
|
-
minutesSaved: {
|
|
1124
|
-
total: number;
|
|
1125
|
-
average: number;
|
|
1126
|
-
max: number;
|
|
1127
|
-
};
|
|
1128
|
-
preventedBadEdits: number;
|
|
1129
|
-
ownerRoutingClear: number;
|
|
1130
|
-
nextCommandClear: number;
|
|
1131
|
-
repeatUse: {
|
|
1132
|
-
distinctPrs: number;
|
|
1133
|
-
repeatedRepos: number;
|
|
1134
|
-
requiredDistinctPrs: number;
|
|
1135
|
-
requiredRepeatedRepos: number;
|
|
1136
|
-
ready: boolean;
|
|
1137
|
-
};
|
|
1138
|
-
falsePositive: {
|
|
1139
|
-
totalReports: number;
|
|
1140
|
-
noisyRules: Array<{
|
|
1141
|
-
rule: string;
|
|
1142
|
-
count: number;
|
|
1143
|
-
}>;
|
|
1144
|
-
missingSignals: Array<{
|
|
1145
|
-
signal: string;
|
|
1146
|
-
count: number;
|
|
1147
|
-
}>;
|
|
1148
|
-
noisyFindings: Array<{
|
|
1149
|
-
finding: string;
|
|
1150
|
-
count: number;
|
|
1151
|
-
}>;
|
|
1152
|
-
};
|
|
1153
|
-
nextDogfoodCommand: string;
|
|
1154
|
-
}
|
|
1155
|
-
export interface DogfoodRepoValidation {
|
|
1156
|
-
feedbackResponses: number;
|
|
1157
|
-
usefulResponses: number;
|
|
1158
|
-
prRefs: string[];
|
|
1159
|
-
minutesSaved: number;
|
|
1160
|
-
preventedBadEdits: number;
|
|
1161
|
-
ownerRoutingClear: number;
|
|
1162
|
-
nextCommandClear: number;
|
|
1163
|
-
falsePositiveRules: string[];
|
|
1164
|
-
missingSignals: string[];
|
|
1165
|
-
noisyFindings: string[];
|
|
1166
|
-
}
|
|
1167
|
-
export interface DogfoodWebsiteProof {
|
|
1168
|
-
headline: string;
|
|
1169
|
-
metrics: string[];
|
|
1170
|
-
bullets: string[];
|
|
1171
|
-
markdown: string;
|
|
1172
|
-
}
|
|
1173
|
-
export interface DogfoodMarketValidation {
|
|
1174
|
-
status: 'proven' | 'needs_feedback' | 'needs_more_repos' | 'needs_tuning';
|
|
1175
|
-
summary: string;
|
|
1176
|
-
proofGates: Array<{
|
|
1177
|
-
id: 'repo-coverage' | 'reviewer-feedback' | 'useful-feedback' | 'repeat-use' | 'measured-value' | 'false-positive-balance';
|
|
1178
|
-
status: 'pass' | 'fail';
|
|
1179
|
-
summary: string;
|
|
1180
|
-
command: string;
|
|
1181
|
-
}>;
|
|
1182
|
-
nextProofStep: string;
|
|
1183
|
-
repoCoverage: {
|
|
1184
|
-
target: number;
|
|
1185
|
-
evaluated: number;
|
|
1186
|
-
targetMet: boolean;
|
|
1187
|
-
};
|
|
1188
|
-
feedback: {
|
|
1189
|
-
responses: number;
|
|
1190
|
-
usefulResponses: number;
|
|
1191
|
-
usefulnessRate: number;
|
|
1192
|
-
preventedBadEdits: number;
|
|
1193
|
-
ownerRoutingClear: number;
|
|
1194
|
-
nextCommandClear: number;
|
|
1195
|
-
minutesSaved: {
|
|
1196
|
-
total: number;
|
|
1197
|
-
average: number;
|
|
1198
|
-
max: number;
|
|
1199
|
-
};
|
|
1200
|
-
};
|
|
1201
|
-
falsePositive: {
|
|
1202
|
-
totalReports: number;
|
|
1203
|
-
noisyRules: Array<{
|
|
1204
|
-
rule: string;
|
|
1205
|
-
count: number;
|
|
1206
|
-
}>;
|
|
1207
|
-
missingSignals: Array<{
|
|
1208
|
-
signal: string;
|
|
1209
|
-
count: number;
|
|
1210
|
-
}>;
|
|
1211
|
-
noisyFindings: Array<{
|
|
1212
|
-
finding: string;
|
|
1213
|
-
count: number;
|
|
1214
|
-
}>;
|
|
1215
|
-
};
|
|
1216
|
-
firstPr: {
|
|
1217
|
-
readyRepos: number;
|
|
1218
|
-
repeatUseReadyRepos: number;
|
|
1219
|
-
requiredFeedbackQuestions: string[];
|
|
1220
|
-
};
|
|
1221
|
-
value: {
|
|
1222
|
-
averageMinutesSaved: number;
|
|
1223
|
-
requiredAverageMinutesSaved: number;
|
|
1224
|
-
preventedBadEdits: number;
|
|
1225
|
-
ready: boolean;
|
|
1226
|
-
};
|
|
1227
|
-
repeatUse: {
|
|
1228
|
-
distinctPrs: number;
|
|
1229
|
-
repeatedRepos: number;
|
|
1230
|
-
requiredDistinctPrs: number;
|
|
1231
|
-
requiredRepeatedRepos: number;
|
|
1232
|
-
ready: boolean;
|
|
1233
|
-
};
|
|
1234
|
-
websiteProof: DogfoodWebsiteProof;
|
|
1235
|
-
}
|
|
1236
|
-
export interface DogfoodRepoResult {
|
|
1237
|
-
path: string;
|
|
1238
|
-
name: string;
|
|
1239
|
-
status: DogfoodRepoStatus;
|
|
1240
|
-
healthScore: number;
|
|
1241
|
-
mcpReady: boolean;
|
|
1242
|
-
prCommentReady: boolean;
|
|
1243
|
-
repeatUseReady: boolean;
|
|
1244
|
-
verdict: EvidencePackVerdict;
|
|
1245
|
-
gaps: string[];
|
|
1246
|
-
feedbackQuestions: string[];
|
|
1247
|
-
validation: DogfoodRepoValidation;
|
|
1248
|
-
nextCommands: string[];
|
|
1249
|
-
}
|
|
1250
|
-
export interface DogfoodReport {
|
|
1251
|
-
schemaVersion: 1;
|
|
1252
|
-
readOnly: true;
|
|
1253
|
-
rootPath: string;
|
|
1254
|
-
targetRepoCount: number;
|
|
1255
|
-
summary: string;
|
|
1256
|
-
repos: DogfoodRepoResult[];
|
|
1257
|
-
totals: {
|
|
1258
|
-
reposEvaluated: number;
|
|
1259
|
-
passingRepos: number;
|
|
1260
|
-
warningRepos: number;
|
|
1261
|
-
failingRepos: number;
|
|
1262
|
-
prCommentReady: number;
|
|
1263
|
-
repeatUseReady: number;
|
|
1264
|
-
mcpReady: number;
|
|
1265
|
-
usefulFeedback: number;
|
|
1266
|
-
minutesSaved: number;
|
|
1267
|
-
preventedBadEdits: number;
|
|
1268
|
-
falsePositiveReports: number;
|
|
1269
|
-
};
|
|
1270
|
-
marketValidation: DogfoodMarketValidation;
|
|
1271
|
-
suggestedNextActions: PreflightSuggestedAction[];
|
|
1272
|
-
}
|
|
1273
|
-
export type TrialVerdict = 'adopt' | 'pilot' | 'tune' | 'setup';
|
|
1274
|
-
export interface TrialReport {
|
|
1275
|
-
schemaVersion: 1;
|
|
1276
|
-
readOnly: true;
|
|
1277
|
-
rootPath: string;
|
|
1278
|
-
verdict: TrialVerdict;
|
|
1279
|
-
summary: string;
|
|
1280
|
-
activation: {
|
|
1281
|
-
status: 'pass' | 'warn' | 'fail';
|
|
1282
|
-
setupOverall: 'pass' | 'warn' | 'fail';
|
|
1283
|
-
healthScore: number;
|
|
1284
|
-
mcpReady: boolean;
|
|
1285
|
-
adoptionLoopReady: boolean;
|
|
1286
|
-
firstPrCommand: string;
|
|
1287
|
-
feedbackCommand: string;
|
|
1288
|
-
};
|
|
1289
|
-
feedback?: FeedbackSummaryReport;
|
|
1290
|
-
dogfood: DogfoodReport;
|
|
1291
|
-
decision: {
|
|
1292
|
-
adoptable: boolean;
|
|
1293
|
-
reasons: string[];
|
|
1294
|
-
};
|
|
1295
|
-
websiteProof: DogfoodWebsiteProof;
|
|
1296
|
-
nextCommands: PreflightSuggestedAction[];
|
|
1297
|
-
}
|
|
1298
|
-
export interface GraphCorpusFixtureMetrics {
|
|
1299
|
-
name: string;
|
|
1300
|
-
fixture: string;
|
|
1301
|
-
files: number;
|
|
1302
|
-
functions: number;
|
|
1303
|
-
packages: number;
|
|
1304
|
-
symbols: number;
|
|
1305
|
-
importEdges: number;
|
|
1306
|
-
callEdges: number;
|
|
1307
|
-
dataflowRisks: number;
|
|
1308
|
-
}
|
|
1309
|
-
export interface GraphCorpusReport {
|
|
1310
|
-
schemaVersion: 1;
|
|
1311
|
-
fixtures: GraphCorpusFixtureMetrics[];
|
|
1312
|
-
totals: Omit<GraphCorpusFixtureMetrics, 'name' | 'fixture'>;
|
|
1313
|
-
}
|
|
1314
|
-
export type QualityScorecardVerdict = 'excellent' | 'healthy' | 'needs_attention' | 'blocked';
|
|
1315
|
-
export type QualityScorecardStatus = 'pass' | 'watch' | 'fail';
|
|
1316
|
-
export interface QualityScorecardDimension {
|
|
1317
|
-
id: 'health' | 'security' | 'tests' | 'maintainability' | 'coordination';
|
|
1318
|
-
label: string;
|
|
1319
|
-
status: QualityScorecardStatus;
|
|
1320
|
-
score: number;
|
|
1321
|
-
summary: string;
|
|
1322
|
-
evidence: string[];
|
|
1323
|
-
commands: string[];
|
|
1324
|
-
}
|
|
1325
|
-
export interface QualityScorecardRisk {
|
|
1326
|
-
id: string;
|
|
1327
|
-
priority: WorkplanPriority;
|
|
1328
|
-
title: string;
|
|
1329
|
-
files: string[];
|
|
1330
|
-
source: 'issue' | 'hotspot' | 'coordination';
|
|
1331
|
-
command: string;
|
|
1332
|
-
}
|
|
1333
|
-
export interface QualityScorecardReport {
|
|
1334
|
-
schemaVersion: 1;
|
|
1335
|
-
verdict: QualityScorecardVerdict;
|
|
1336
|
-
summary: string;
|
|
1337
|
-
health: HealthScore;
|
|
1338
|
-
dimensions: QualityScorecardDimension[];
|
|
1339
|
-
topRisks: QualityScorecardRisk[];
|
|
1340
|
-
fixFirst?: FixFirstRecommendation;
|
|
1341
|
-
commands: string[];
|
|
1342
|
-
suggestedNextActions: PreflightSuggestedAction[];
|
|
1343
|
-
truncated?: boolean;
|
|
1344
|
-
}
|
|
1345
|
-
export type UnderstandView = 'map' | 'flow' | 'contracts' | 'change' | 'verify';
|
|
1346
|
-
export interface UnderstandCitation {
|
|
1347
|
-
file: string;
|
|
1348
|
-
symbol?: string;
|
|
1349
|
-
line?: number;
|
|
1350
|
-
reason: string;
|
|
1351
|
-
}
|
|
1352
|
-
export interface UnderstandClaim {
|
|
1353
|
-
id: string;
|
|
1354
|
-
title: string;
|
|
1355
|
-
detail: string;
|
|
1356
|
-
confidence: 'low' | 'medium' | 'high';
|
|
1357
|
-
citations: UnderstandCitation[];
|
|
1358
|
-
}
|
|
1359
|
-
export interface UnderstandEntrypoint {
|
|
1360
|
-
file: string;
|
|
1361
|
-
kind: 'cli' | 'server' | 'route' | 'package-export' | 'test' | 'script' | 'module';
|
|
1362
|
-
symbols: string[];
|
|
1363
|
-
why: string;
|
|
1364
|
-
citations: UnderstandCitation[];
|
|
1365
|
-
}
|
|
1366
|
-
export interface UnderstandBoundary {
|
|
1367
|
-
name: string;
|
|
1368
|
-
files: number;
|
|
1369
|
-
publicExports: string[];
|
|
1370
|
-
dependsOn: string[];
|
|
1371
|
-
citations: UnderstandCitation[];
|
|
1372
|
-
}
|
|
1373
|
-
export interface UnderstandFlowSideEffect {
|
|
1374
|
-
kind: 'database' | 'filesystem' | 'network' | 'process' | 'env' | 'unknown';
|
|
1375
|
-
label: string;
|
|
1376
|
-
files: string[];
|
|
1377
|
-
citations: UnderstandCitation[];
|
|
1378
|
-
}
|
|
1379
|
-
export interface UnderstandFlow {
|
|
1380
|
-
id: string;
|
|
1381
|
-
label: string;
|
|
1382
|
-
entry: UnderstandEntrypoint;
|
|
1383
|
-
path: string[];
|
|
1384
|
-
sideEffects: UnderstandFlowSideEffect[];
|
|
1385
|
-
confidence: 'low' | 'medium' | 'high';
|
|
1386
|
-
citations: UnderstandCitation[];
|
|
1387
|
-
}
|
|
1388
|
-
export interface UnderstandPublicExport {
|
|
1389
|
-
name: string;
|
|
1390
|
-
file: string;
|
|
1391
|
-
kind: 'package' | 'symbol';
|
|
1392
|
-
citations: UnderstandCitation[];
|
|
1393
|
-
}
|
|
1394
|
-
export interface UnderstandConfigContract {
|
|
1395
|
-
name: string;
|
|
1396
|
-
file: string;
|
|
1397
|
-
kind: 'env' | 'package-script' | 'config-file';
|
|
1398
|
-
required: boolean;
|
|
1399
|
-
citations: UnderstandCitation[];
|
|
1400
|
-
}
|
|
1401
|
-
export interface UnderstandBreakingChangeRisk {
|
|
1402
|
-
id: string;
|
|
1403
|
-
title: string;
|
|
1404
|
-
files: string[];
|
|
1405
|
-
why: string;
|
|
1406
|
-
command: string;
|
|
1407
|
-
}
|
|
1408
|
-
export interface UnderstandContracts {
|
|
1409
|
-
publicExports: UnderstandPublicExport[];
|
|
1410
|
-
configContracts: UnderstandConfigContract[];
|
|
1411
|
-
breakingChangeRisks: UnderstandBreakingChangeRisk[];
|
|
1412
|
-
}
|
|
1413
|
-
export interface UnderstandChangeReadiness {
|
|
1414
|
-
intent: string;
|
|
1415
|
-
blastRadius: Array<{
|
|
1416
|
-
label: string;
|
|
1417
|
-
files: string[];
|
|
1418
|
-
why: string;
|
|
1419
|
-
command: string;
|
|
1420
|
-
}>;
|
|
1421
|
-
safeEdit: {
|
|
1422
|
-
title: string;
|
|
1423
|
-
files: string[];
|
|
1424
|
-
command: string;
|
|
1425
|
-
why: string;
|
|
1426
|
-
};
|
|
1427
|
-
owners: Array<{
|
|
1428
|
-
owner: string;
|
|
1429
|
-
files: string[];
|
|
1430
|
-
reason: string;
|
|
1431
|
-
}>;
|
|
1432
|
-
rollback: {
|
|
1433
|
-
command: string;
|
|
1434
|
-
why: string;
|
|
1435
|
-
};
|
|
1436
|
-
verificationCommands: string[];
|
|
1437
|
-
}
|
|
1438
|
-
export interface UnderstandVerificationTier {
|
|
1439
|
-
id: 'minimal' | 'focused' | 'full';
|
|
1440
|
-
label: string;
|
|
1441
|
-
commands: string[];
|
|
1442
|
-
when: string;
|
|
1443
|
-
}
|
|
1444
|
-
export interface UnderstandDirectTest {
|
|
1445
|
-
file: string;
|
|
1446
|
-
tests: string[];
|
|
1447
|
-
confidence: 'none' | 'low' | 'medium' | 'high';
|
|
1448
|
-
}
|
|
1449
|
-
export interface UnderstandVerification {
|
|
1450
|
-
tiers: UnderstandVerificationTier[];
|
|
1451
|
-
directTests: UnderstandDirectTest[];
|
|
1452
|
-
gaps: Array<{
|
|
1453
|
-
file: string;
|
|
1454
|
-
reason: string;
|
|
1455
|
-
command: string;
|
|
1456
|
-
}>;
|
|
1457
|
-
}
|
|
1458
|
-
export interface UnderstandReadFirst {
|
|
1459
|
-
file: string;
|
|
1460
|
-
why: string;
|
|
1461
|
-
command: string;
|
|
1462
|
-
citations: UnderstandCitation[];
|
|
1463
|
-
}
|
|
1464
|
-
export interface UnderstandRisk {
|
|
1465
|
-
id: string;
|
|
1466
|
-
priority: WorkplanPriority;
|
|
1467
|
-
title: string;
|
|
1468
|
-
files: string[];
|
|
1469
|
-
why: string;
|
|
1470
|
-
command: string;
|
|
1471
|
-
}
|
|
1472
|
-
export interface UnderstandUnknown {
|
|
1473
|
-
id: string;
|
|
1474
|
-
question: string;
|
|
1475
|
-
whyUnknown: string;
|
|
1476
|
-
command: string;
|
|
1477
|
-
}
|
|
1478
|
-
export interface UnderstandReport {
|
|
1479
|
-
schemaVersion: 1;
|
|
1480
|
-
view: UnderstandView;
|
|
1481
|
-
rootPath: string;
|
|
1482
|
-
intent?: string;
|
|
1483
|
-
summary: string;
|
|
1484
|
-
claims: UnderstandClaim[];
|
|
1485
|
-
entrypoints: UnderstandEntrypoint[];
|
|
1486
|
-
boundaries: UnderstandBoundary[];
|
|
1487
|
-
flows: UnderstandFlow[];
|
|
1488
|
-
contracts: UnderstandContracts;
|
|
1489
|
-
changeReadiness: UnderstandChangeReadiness;
|
|
1490
|
-
verification: UnderstandVerification;
|
|
1491
|
-
readFirst: UnderstandReadFirst[];
|
|
1492
|
-
risks: UnderstandRisk[];
|
|
1493
|
-
unknowns: UnderstandUnknown[];
|
|
1494
|
-
commands: string[];
|
|
1495
|
-
truncated?: boolean;
|
|
1496
|
-
}
|
|
1497
|
-
export interface SessionCoordinationHint {
|
|
1498
|
-
id: 'current-worktree-check' | 'remembered-session-context' | 'resolve-conflicts' | 'swarm-coordination';
|
|
1499
|
-
label: string;
|
|
1500
|
-
message: string;
|
|
1501
|
-
command: string;
|
|
1502
|
-
}
|
|
1503
|
-
export interface SessionResourceSummary {
|
|
1504
|
-
schemaVersion: 1;
|
|
1505
|
-
sessionId: string;
|
|
1506
|
-
touchedFiles: string[];
|
|
1507
|
-
recentIssues: Issue[];
|
|
1508
|
-
highRiskTouchedFiles: Array<{
|
|
1509
|
-
file: string;
|
|
1510
|
-
riskScore: number;
|
|
1511
|
-
}>;
|
|
1512
|
-
staleSignals: string[];
|
|
1513
|
-
coordinationHints: SessionCoordinationHint[];
|
|
1514
|
-
truncated?: boolean;
|
|
1515
|
-
}
|
|
1516
|
-
export interface SessionConflict {
|
|
1517
|
-
kind: 'same-file' | 'import-related' | 'same-workspace' | 'taint-related' | 'hotspot-overlap';
|
|
1518
|
-
files: string[];
|
|
1519
|
-
message: string;
|
|
1520
|
-
severity: 'warning' | 'error';
|
|
1521
|
-
}
|
|
1522
|
-
export interface SessionHandoff {
|
|
1523
|
-
schemaVersion: 1;
|
|
1524
|
-
summary: SessionResourceSummary;
|
|
1525
|
-
remainingRisks: SessionConflict[];
|
|
1526
|
-
suggestedNextActions: PreflightSuggestedAction[];
|
|
1527
|
-
coordinationHints: SessionCoordinationHint[];
|
|
1528
|
-
avoidRepeating: string[];
|
|
1529
|
-
}
|
|
1530
|
-
export interface RiskNowResource {
|
|
1531
|
-
schemaVersion: 1;
|
|
1532
|
-
conflicts: SessionConflict[];
|
|
1533
|
-
touchedFiles: string[];
|
|
1534
|
-
coordinationHints: SessionCoordinationHint[];
|
|
1535
|
-
truncated?: boolean;
|
|
1536
|
-
}
|
|
1537
|
-
export interface PluginTestResult {
|
|
1538
|
-
schemaVersion: 1;
|
|
1539
|
-
manifestPath: string;
|
|
1540
|
-
ok: boolean;
|
|
1541
|
-
diagnostics: Array<{
|
|
1542
|
-
code: string;
|
|
1543
|
-
severity: IssueSeverity;
|
|
1544
|
-
message: string;
|
|
1545
|
-
}>;
|
|
1546
|
-
trust: {
|
|
1547
|
-
localOnly: true;
|
|
1548
|
-
previewFlag: 'PROJSCAN_PLUGINS_PREVIEW=1';
|
|
1549
|
-
reminder: string;
|
|
1550
|
-
};
|
|
1551
|
-
commands: {
|
|
1552
|
-
validate: string;
|
|
1553
|
-
test: string;
|
|
1554
|
-
execute: string;
|
|
1555
|
-
enable: string;
|
|
1556
|
-
};
|
|
1557
|
-
execution: {
|
|
1558
|
-
requested: boolean;
|
|
1559
|
-
executed: boolean;
|
|
1560
|
-
mode: 'static' | 'execute';
|
|
1561
|
-
note: string;
|
|
1562
|
-
};
|
|
1563
|
-
context: {
|
|
1564
|
-
requested: boolean;
|
|
1565
|
-
capabilities: Array<'semanticGraph' | 'dataflow'>;
|
|
1566
|
-
note: string;
|
|
1567
|
-
};
|
|
1568
|
-
analyzer?: {
|
|
1569
|
-
issues: Issue[];
|
|
1570
|
-
};
|
|
1571
|
-
reporter?: {
|
|
1572
|
-
outputs: Array<{
|
|
1573
|
-
command: string;
|
|
1574
|
-
text: string;
|
|
1575
|
-
}>;
|
|
1576
|
-
};
|
|
1577
|
-
}
|
|
1578
|
-
export interface ReviewContractChange {
|
|
1579
|
-
kind: 'export-added' | 'export-removed' | 'export-renamed' | 'entrypoint-changed' | 'public-export-changed' | 'signature-changed';
|
|
1580
|
-
file: string;
|
|
1581
|
-
symbol?: string;
|
|
1582
|
-
before?: string;
|
|
1583
|
-
after?: string;
|
|
1584
|
-
confidence: 'high' | 'medium' | 'low';
|
|
1585
|
-
why: string;
|
|
1586
|
-
}
|
|
1587
|
-
export interface BaselineHotspot {
|
|
1588
|
-
relativePath: string;
|
|
1589
|
-
riskScore: number;
|
|
1590
|
-
churn: number;
|
|
1591
|
-
}
|
|
1592
|
-
export interface Baseline {
|
|
1593
|
-
score: number;
|
|
1594
|
-
grade: HealthScore['grade'];
|
|
1595
|
-
issues: {
|
|
1596
|
-
id: string;
|
|
1597
|
-
title: string;
|
|
1598
|
-
severity: IssueSeverity;
|
|
1599
|
-
}[];
|
|
1600
|
-
hotspots?: BaselineHotspot[];
|
|
1601
|
-
issueRuleCounts?: Record<string, number>;
|
|
1602
|
-
timestamp: string;
|
|
1603
|
-
}
|
|
1604
|
-
export interface HotspotDelta {
|
|
1605
|
-
relativePath: string;
|
|
1606
|
-
beforeScore: number | null;
|
|
1607
|
-
afterScore: number | null;
|
|
1608
|
-
scoreDelta: number;
|
|
1609
|
-
}
|
|
1610
|
-
export interface HotspotDiffSummary {
|
|
1611
|
-
rose: HotspotDelta[];
|
|
1612
|
-
fell: HotspotDelta[];
|
|
1613
|
-
appeared: HotspotDelta[];
|
|
1614
|
-
resolved: HotspotDelta[];
|
|
1615
|
-
}
|
|
1616
|
-
export interface BaselineRecurringRule {
|
|
1617
|
-
id: string;
|
|
1618
|
-
before: number;
|
|
1619
|
-
after: number;
|
|
1620
|
-
}
|
|
1621
|
-
export interface BaselineTrend {
|
|
1622
|
-
scoreDirection: 'up' | 'down' | 'flat';
|
|
1623
|
-
scoreDelta: number;
|
|
1624
|
-
riskDirection?: 'up' | 'down' | 'flat';
|
|
1625
|
-
riskDelta?: number;
|
|
1626
|
-
qualityScoreBefore?: number;
|
|
1627
|
-
qualityScoreAfter?: number;
|
|
1628
|
-
newIssueCount?: number;
|
|
1629
|
-
resolvedIssueCount?: number;
|
|
1630
|
-
changedSinceBaseline?: string[];
|
|
1631
|
-
newHotspots: string[];
|
|
1632
|
-
recurringNoisyRules: BaselineRecurringRule[];
|
|
1633
|
-
summary: string;
|
|
1634
|
-
}
|
|
1635
|
-
export interface DiffResult {
|
|
1636
|
-
before: Baseline;
|
|
1637
|
-
after: Baseline;
|
|
1638
|
-
scoreDelta: number;
|
|
1639
|
-
newIssues: string[];
|
|
1640
|
-
resolvedIssues: string[];
|
|
1641
|
-
hotspotDiff?: HotspotDiffSummary;
|
|
1642
|
-
trend: BaselineTrend;
|
|
1643
|
-
}
|
|
1644
|
-
export type ReportFormat = 'console' | 'json' | 'markdown' | 'sarif' | 'html';
|
|
1645
|
-
export type SemverDrift = 'patch' | 'minor' | 'major' | 'same' | 'unknown';
|
|
1646
|
-
export interface OutdatedPackage {
|
|
1647
|
-
name: string;
|
|
1648
|
-
declared: string;
|
|
1649
|
-
installed: string | null;
|
|
1650
|
-
latest: string | null;
|
|
1651
|
-
drift: SemverDrift;
|
|
1652
|
-
scope: 'dependency' | 'devDependency';
|
|
1653
|
-
/** Workspace package this dep was declared in. Empty/undefined when not a monorepo. */
|
|
1654
|
-
workspace?: string;
|
|
1655
|
-
}
|
|
1656
|
-
export interface OutdatedReport {
|
|
1657
|
-
available: boolean;
|
|
1658
|
-
reason?: string;
|
|
1659
|
-
totalPackages: number;
|
|
1660
|
-
packages: OutdatedPackage[];
|
|
1661
|
-
/** Per-workspace breakdown when scanning a monorepo. Empty for single-package repos. */
|
|
1662
|
-
byWorkspace?: Array<{
|
|
1663
|
-
workspace: string;
|
|
1664
|
-
relativePath: string;
|
|
1665
|
-
total: number;
|
|
1666
|
-
}>;
|
|
1667
|
-
}
|
|
1668
|
-
export type AuditSeverity = 'critical' | 'high' | 'moderate' | 'low' | 'info';
|
|
1669
|
-
export interface AuditFinding {
|
|
1670
|
-
name: string;
|
|
1671
|
-
severity: AuditSeverity;
|
|
1672
|
-
title: string;
|
|
1673
|
-
url?: string;
|
|
1674
|
-
cve?: string[];
|
|
1675
|
-
via: string[];
|
|
1676
|
-
range?: string;
|
|
1677
|
-
fixAvailable: boolean;
|
|
1678
|
-
}
|
|
1679
|
-
export interface AuditReport {
|
|
1680
|
-
available: boolean;
|
|
1681
|
-
reason?: string;
|
|
1682
|
-
summary: Record<AuditSeverity, number>;
|
|
1683
|
-
findings: AuditFinding[];
|
|
1684
|
-
}
|
|
1685
|
-
export interface UpgradePreview {
|
|
1686
|
-
available: boolean;
|
|
1687
|
-
reason?: string;
|
|
1688
|
-
name: string;
|
|
1689
|
-
declared: string | null;
|
|
1690
|
-
installed: string | null;
|
|
1691
|
-
latest: string | null;
|
|
1692
|
-
drift: SemverDrift;
|
|
1693
|
-
breakingMarkers: string[];
|
|
1694
|
-
changelogExcerpt?: string;
|
|
1695
|
-
importers: string[];
|
|
1696
|
-
/**
|
|
1697
|
-
* 1.3+ — set when `previewUpgrade` was called with `checkRegistry: true`.
|
|
1698
|
-
* "registry" if the latest came from npm; "installed" if we fell back to
|
|
1699
|
-
* the locally-installed version (either offline mode or a registry fetch
|
|
1700
|
-
* that failed). Absent when no registry attempt was made.
|
|
1701
|
-
*/
|
|
1702
|
-
latestSource?: 'registry' | 'installed';
|
|
1703
|
-
/** 1.3+ — set when a registry fetch was attempted and failed. */
|
|
1704
|
-
registryError?: string;
|
|
1705
|
-
}
|
|
1706
|
-
export type CoverageSource = 'lcov' | 'coverage-final' | 'coverage-summary';
|
|
1707
|
-
export interface FileCoverage {
|
|
1708
|
-
relativePath: string;
|
|
1709
|
-
lineCoverage: number;
|
|
1710
|
-
linesFound: number;
|
|
1711
|
-
linesHit: number;
|
|
1712
|
-
}
|
|
1713
|
-
export interface CoverageReport {
|
|
1714
|
-
available: boolean;
|
|
1715
|
-
reason?: string;
|
|
1716
|
-
source: CoverageSource | null;
|
|
1717
|
-
sourceFile: string | null;
|
|
1718
|
-
totalCoverage: number;
|
|
1719
|
-
files: FileCoverage[];
|
|
1720
|
-
}
|
|
1721
|
-
export interface CoverageJoinedHotspot {
|
|
1722
|
-
relativePath: string;
|
|
1723
|
-
riskScore: number;
|
|
1724
|
-
churn: number;
|
|
1725
|
-
lineCount: number;
|
|
1726
|
-
issueCount: number;
|
|
1727
|
-
coverage: number | null;
|
|
1728
|
-
priority: number;
|
|
1729
|
-
reasons: string[];
|
|
1730
|
-
}
|
|
1731
|
-
export interface CoverageJoinedReport {
|
|
1732
|
-
available: boolean;
|
|
1733
|
-
reason?: string;
|
|
1734
|
-
coverageSource: CoverageSource | null;
|
|
1735
|
-
coverageSourceFile: string | null;
|
|
1736
|
-
entries: CoverageJoinedHotspot[];
|
|
1737
|
-
}
|
|
1738
|
-
export interface ProjscanConfig {
|
|
1739
|
-
minScore?: number;
|
|
1740
|
-
baseRef?: string;
|
|
1741
|
-
hotspots?: {
|
|
1742
|
-
limit?: number;
|
|
1743
|
-
since?: string;
|
|
1744
|
-
};
|
|
1745
|
-
ignore?: string[];
|
|
1746
|
-
scan?: {
|
|
1747
|
-
includeIgnored?: boolean;
|
|
1748
|
-
scanEnvValues?: boolean;
|
|
1749
|
-
offline?: boolean;
|
|
1750
|
-
};
|
|
1751
|
-
disableRules?: string[];
|
|
1752
|
-
severityOverrides?: Record<string, IssueSeverity>;
|
|
1753
|
-
/**
|
|
1754
|
-
* Monorepo-specific configuration (0.14.0+). Currently scopes the
|
|
1755
|
-
* cross-package import policy: each entry says "package P may only import
|
|
1756
|
-
* from these listed packages, or specifically may NOT import from these
|
|
1757
|
-
* listed packages." Edges that violate become `cross-package-violation-*`
|
|
1758
|
-
* issues in projscan_doctor.
|
|
1759
|
-
*/
|
|
1760
|
-
monorepo?: {
|
|
1761
|
-
importPolicy?: ImportPolicyRule[];
|
|
1762
|
-
};
|
|
1763
|
-
/**
|
|
1764
|
-
* Taint analysis tuning (1.6.0+). Both lists merge ON TOP of the
|
|
1765
|
-
* built-in defaults — they don't replace them. Use this to add
|
|
1766
|
-
* project-specific source/sink names: `customSecretReader`, `query`,
|
|
1767
|
-
* `runRawSql`, etc. To suppress a default, list the rule id under
|
|
1768
|
-
* `disableRules` (e.g. `taint-flow-detected`).
|
|
1769
|
-
*/
|
|
1770
|
-
taint?: {
|
|
1771
|
-
sources?: string[];
|
|
1772
|
-
sinks?: string[];
|
|
1773
|
-
};
|
|
1774
|
-
}
|
|
1775
|
-
/**
|
|
1776
|
-
* One cross-package import rule. `from` is the package name (matches
|
|
1777
|
-
* WorkspacePackage.name). Exactly one of `allow` / `deny` is required. Both
|
|
1778
|
-
* lists are package-name globs - a leading `!` negates a single entry, and a
|
|
1779
|
-
* single `*` is the wildcard. When both `allow` and `deny` are set, allow
|
|
1780
|
-
* is checked first and a hit short-circuits as ALLOWED; otherwise deny is
|
|
1781
|
-
* checked.
|
|
1782
|
-
*/
|
|
1783
|
-
export interface ImportPolicyRule {
|
|
1784
|
-
from: string;
|
|
1785
|
-
allow?: string[];
|
|
1786
|
-
deny?: string[];
|
|
1787
|
-
}
|
|
1788
|
-
export interface LoadedConfig {
|
|
1789
|
-
config: ProjscanConfig;
|
|
1790
|
-
source: string | null;
|
|
1791
|
-
}
|
|
1792
|
-
export interface AuthorShare {
|
|
1793
|
-
author: string;
|
|
1794
|
-
commits: number;
|
|
1795
|
-
share: number;
|
|
1796
|
-
}
|
|
1797
|
-
export interface FileHotspot {
|
|
1798
|
-
relativePath: string;
|
|
1799
|
-
churn: number;
|
|
1800
|
-
distinctAuthors: number;
|
|
1801
|
-
daysSinceLastChange: number | null;
|
|
1802
|
-
lineCount: number;
|
|
1803
|
-
/** AST-derived McCabe complexity. null when no language adapter parsed this file. */
|
|
1804
|
-
cyclomaticComplexity: number | null;
|
|
1805
|
-
sizeBytes: number;
|
|
1806
|
-
issueCount: number;
|
|
1807
|
-
issueIds: string[];
|
|
1808
|
-
riskScore: number;
|
|
1809
|
-
reasons: string[];
|
|
1810
|
-
primaryAuthor: string | null;
|
|
1811
|
-
primaryAuthorShare: number;
|
|
1812
|
-
busFactorOne: boolean;
|
|
1813
|
-
topAuthors: AuthorShare[];
|
|
1814
|
-
coverage?: number | null;
|
|
1815
|
-
/**
|
|
1816
|
-
* 1.5+ — true when Project Memory has marked this file as
|
|
1817
|
-
* "accepted load-bearing debt" (top-K hotspot for ≥ 5 runs over
|
|
1818
|
-
* ≥ 7 days without CC/churn improving). The reporter tags accepted
|
|
1819
|
-
* rows so users aren't repeatedly pestered about debt they've
|
|
1820
|
-
* implicitly opted into. Absent on older saves / fresh runs.
|
|
1821
|
-
*/
|
|
1822
|
-
accepted?: boolean;
|
|
1823
|
-
}
|
|
1824
|
-
export interface HotspotReport {
|
|
1825
|
-
available: boolean;
|
|
1826
|
-
reason?: string;
|
|
1827
|
-
window: {
|
|
1828
|
-
since: string | null;
|
|
1829
|
-
commitsScanned: number;
|
|
1830
|
-
};
|
|
1831
|
-
hotspots: FileHotspot[];
|
|
1832
|
-
totalFilesRanked: number;
|
|
1833
|
-
}
|
|
1834
|
-
export interface FileCoupling {
|
|
1835
|
-
relativePath: string;
|
|
1836
|
-
/** Number of files that import this one. */
|
|
1837
|
-
fanIn: number;
|
|
1838
|
-
/** Number of locally-resolved imports this file makes. */
|
|
1839
|
-
fanOut: number;
|
|
1840
|
-
/** Bob Martin's instability: fanOut / (fanIn + fanOut). 0 when both are zero. */
|
|
1841
|
-
instability: number;
|
|
1842
|
-
}
|
|
1843
|
-
export interface ImportCycle {
|
|
1844
|
-
/** Member files of a strongly-connected component (size >= 2). */
|
|
1845
|
-
files: string[];
|
|
1846
|
-
size: number;
|
|
1847
|
-
}
|
|
1848
|
-
export interface CrossPackageEdge {
|
|
1849
|
-
/** Importing file + the workspace package it belongs to. */
|
|
1850
|
-
from: {
|
|
1851
|
-
file: string;
|
|
1852
|
-
package: string;
|
|
1853
|
-
};
|
|
1854
|
-
/** Imported file + the workspace package it belongs to. */
|
|
1855
|
-
to: {
|
|
1856
|
-
file: string;
|
|
1857
|
-
package: string;
|
|
1858
|
-
};
|
|
1859
|
-
}
|
|
1860
|
-
export interface CouplingReport {
|
|
1861
|
-
files: FileCoupling[];
|
|
1862
|
-
cycles: ImportCycle[];
|
|
1863
|
-
/**
|
|
1864
|
-
* Edges where importer and imported live in different workspace packages
|
|
1865
|
-
* (0.11). Empty when no workspace info was supplied or when all edges are
|
|
1866
|
-
* intra-package. Useful for spotting unauthorized deep imports across
|
|
1867
|
-
* package boundaries.
|
|
1868
|
-
*/
|
|
1869
|
-
crossPackageEdges: CrossPackageEdge[];
|
|
1870
|
-
totalFiles: number;
|
|
1871
|
-
totalCycles: number;
|
|
1872
|
-
totalCrossPackageEdges: number;
|
|
1873
|
-
}
|
|
1874
|
-
export type WorkspaceKind = 'npm' | 'yarn' | 'pnpm' | 'nx' | 'turbo' | 'lerna' | 'none';
|
|
1875
|
-
export interface WorkspacePackage {
|
|
1876
|
-
/** package.json `name` field, or directory basename when missing. */
|
|
1877
|
-
name: string;
|
|
1878
|
-
/** Workspace-relative path of the package root (no leading `/`, no trailing `/`). */
|
|
1879
|
-
relativePath: string;
|
|
1880
|
-
/** package.json `version` if available. */
|
|
1881
|
-
version?: string;
|
|
1882
|
-
/** True when this is the workspace root itself. */
|
|
1883
|
-
isRoot: boolean;
|
|
1884
|
-
}
|
|
1885
|
-
export interface WorkspaceInfo {
|
|
1886
|
-
kind: WorkspaceKind;
|
|
1887
|
-
/** All packages, including the root if it has its own package.json. */
|
|
1888
|
-
packages: WorkspacePackage[];
|
|
1889
|
-
/** Source manifest used to discover packages, e.g. "package.json#workspaces" or "pnpm-workspace.yaml". */
|
|
1890
|
-
source?: string;
|
|
1891
|
-
}
|
|
1892
|
-
export interface ExportRename {
|
|
1893
|
-
from: string;
|
|
1894
|
-
to: string;
|
|
1895
|
-
}
|
|
1896
|
-
export interface FileAstDiff {
|
|
1897
|
-
relativePath: string;
|
|
1898
|
-
status: 'added' | 'removed' | 'modified';
|
|
1899
|
-
exportsAdded: string[];
|
|
1900
|
-
exportsRemoved: string[];
|
|
1901
|
-
/**
|
|
1902
|
-
* Heuristically-detected renames (0.11). When an export disappears from
|
|
1903
|
-
* base AND a similar new name appears in head AND no other export matches,
|
|
1904
|
-
* we report it here instead of as a +/- pair. Removed/added lists exclude
|
|
1905
|
-
* any names that ended up in renames.
|
|
1906
|
-
*/
|
|
1907
|
-
exportsRenamed: ExportRename[];
|
|
1908
|
-
importsAdded: string[];
|
|
1909
|
-
importsRemoved: string[];
|
|
1910
|
-
callsAdded: string[];
|
|
1911
|
-
callsRemoved: string[];
|
|
1912
|
-
/** CC(head) - CC(base). null when either side wasn't AST-parsed. */
|
|
1913
|
-
cyclomaticDelta: number | null;
|
|
1914
|
-
/** fanIn(head) - fanIn(base). null when graph entry missing on either side. */
|
|
1915
|
-
fanInDelta: number | null;
|
|
1916
|
-
}
|
|
1917
|
-
export interface PrDiffReport {
|
|
1918
|
-
available: boolean;
|
|
1919
|
-
reason?: string;
|
|
1920
|
-
base: {
|
|
1921
|
-
ref: string;
|
|
1922
|
-
resolvedSha: string | null;
|
|
1923
|
-
};
|
|
1924
|
-
head: {
|
|
1925
|
-
ref: string;
|
|
1926
|
-
resolvedSha: string | null;
|
|
1927
|
-
};
|
|
1928
|
-
filesAdded: string[];
|
|
1929
|
-
filesRemoved: string[];
|
|
1930
|
-
filesModified: FileAstDiff[];
|
|
1931
|
-
totalFilesChanged: number;
|
|
1932
|
-
}
|
|
1933
|
-
export type SemanticGraphNodeKind = 'file' | 'function' | 'package' | 'symbol';
|
|
1934
|
-
export interface SemanticGraphNode {
|
|
1935
|
-
id: string;
|
|
1936
|
-
kind: SemanticGraphNodeKind;
|
|
1937
|
-
label: string;
|
|
1938
|
-
file?: string;
|
|
1939
|
-
line?: number;
|
|
1940
|
-
endLine?: number;
|
|
1941
|
-
adapterId?: string;
|
|
1942
|
-
metrics?: {
|
|
1943
|
-
lineCount?: number;
|
|
1944
|
-
cyclomaticComplexity?: number;
|
|
1945
|
-
fanIn?: number;
|
|
1946
|
-
fanOut?: number;
|
|
1947
|
-
};
|
|
1948
|
-
}
|
|
1949
|
-
export type SemanticGraphEdgeKind = 'defines' | 'imports' | 'imports_package' | 'exports' | 'calls';
|
|
1950
|
-
export interface SemanticGraphEdge {
|
|
1951
|
-
from: string;
|
|
1952
|
-
to: string;
|
|
1953
|
-
kind: SemanticGraphEdgeKind;
|
|
1954
|
-
label?: string;
|
|
1955
|
-
}
|
|
1956
|
-
export interface SemanticGraphReport {
|
|
1957
|
-
schemaVersion: 3;
|
|
1958
|
-
nodes: SemanticGraphNode[];
|
|
1959
|
-
edges: SemanticGraphEdge[];
|
|
1960
|
-
metrics: {
|
|
1961
|
-
totalFiles: number;
|
|
1962
|
-
totalFunctions: number;
|
|
1963
|
-
totalPackages: number;
|
|
1964
|
-
totalSymbols: number;
|
|
1965
|
-
totalEdges: number;
|
|
1966
|
-
};
|
|
1967
|
-
truncated: boolean;
|
|
1968
|
-
limits: {
|
|
1969
|
-
maxNodes: number;
|
|
1970
|
-
maxEdges: number;
|
|
1971
|
-
};
|
|
1972
|
-
}
|
|
1973
|
-
export type DataflowRiskKind = 'direct' | 'propagated' | 'bridge';
|
|
1974
|
-
export type DataflowRiskSeverity = 'warning' | 'error';
|
|
1975
|
-
export type DataflowRiskConfidence = 'low' | 'medium' | 'high';
|
|
1976
|
-
export interface DataflowRisk {
|
|
1977
|
-
key: string;
|
|
1978
|
-
kind: DataflowRiskKind;
|
|
1979
|
-
severity: DataflowRiskSeverity;
|
|
1980
|
-
confidence: DataflowRiskConfidence;
|
|
1981
|
-
sourceFn: string;
|
|
1982
|
-
sinkFn: string;
|
|
1983
|
-
bridgeFn?: string;
|
|
1984
|
-
source: string;
|
|
1985
|
-
sink: string;
|
|
1986
|
-
path: string[];
|
|
1987
|
-
sourcePath?: string[];
|
|
1988
|
-
sinkPath?: string[];
|
|
1989
|
-
pathLength: number;
|
|
1990
|
-
files: string[];
|
|
1991
|
-
}
|
|
1992
|
-
export interface DataflowReport {
|
|
1993
|
-
available: boolean;
|
|
1994
|
-
reason?: string;
|
|
1995
|
-
riskCount: number;
|
|
1996
|
-
risks: DataflowRisk[];
|
|
1997
|
-
effectiveSources: string[];
|
|
1998
|
-
effectiveSinks: string[];
|
|
1999
|
-
truncated?: boolean;
|
|
2000
|
-
truncatedSources?: string[];
|
|
2001
|
-
maxDepth?: number;
|
|
2002
|
-
}
|
|
2003
|
-
/**
|
|
2004
|
-
* One changed file enriched with risk signals. The agent calling
|
|
2005
|
-
* projscan_review uses these to decide which files need careful review.
|
|
2006
|
-
*/
|
|
2007
|
-
export interface ReviewFile {
|
|
2008
|
-
relativePath: string;
|
|
2009
|
-
status: 'added' | 'removed' | 'modified';
|
|
2010
|
-
/** Hotspot risk score for the head version. null when file isn't in the hotspot scope. */
|
|
2011
|
-
riskScore: number | null;
|
|
2012
|
-
/** Cyclomatic complexity at head. null when no AST adapter parsed it. */
|
|
2013
|
-
cyclomaticComplexity: number | null;
|
|
2014
|
-
/** Delta from the structural diff (mirrors FileAstDiff.cyclomaticDelta). null when file was added/removed. */
|
|
2015
|
-
cyclomaticDelta: number | null;
|
|
2016
|
-
/** Number of exports added in this PR. */
|
|
2017
|
-
exportsAdded: number;
|
|
2018
|
-
/** Number of exports removed in this PR. */
|
|
2019
|
-
exportsRemoved: number;
|
|
2020
|
-
/** Number of imports added. */
|
|
2021
|
-
importsAdded: number;
|
|
2022
|
-
/** Number of imports removed. */
|
|
2023
|
-
importsRemoved: number;
|
|
2024
|
-
/** 1.9+ — set when `projscan_review` was called with an `intent` arg. Absent otherwise. */
|
|
2025
|
-
intentAlignment?: 'expected' | 'unexpected' | 'out-of-scope' | 'unknown';
|
|
2026
|
-
}
|
|
2027
|
-
/**
|
|
2028
|
-
* A circular import that exists at head and either didn't exist at base or
|
|
2029
|
-
* grew. Surfaced separately from the file list so reviewers see at-a-glance
|
|
2030
|
-
* whether the PR introduces new architectural debt.
|
|
2031
|
-
*/
|
|
2032
|
-
export interface ReviewCycle {
|
|
2033
|
-
files: string[];
|
|
2034
|
-
size: number;
|
|
2035
|
-
/**
|
|
2036
|
-
* 'new' = no overlap with any base cycle; 'expanded' = at least one new
|
|
2037
|
-
* file added to an existing cycle.
|
|
2038
|
-
*/
|
|
2039
|
-
classification: 'new' | 'expanded';
|
|
2040
|
-
/** 1.9+ — set when `projscan_review` was called with an `intent` arg. Absent otherwise. */
|
|
2041
|
-
intentAlignment?: 'expected' | 'unexpected' | 'out-of-scope' | 'unknown';
|
|
2042
|
-
}
|
|
2043
|
-
/**
|
|
2044
|
-
* A function whose CC newly crossed a worry threshold (>= 10) at head, or
|
|
2045
|
-
* was added with high CC, or jumped by 5+ since base.
|
|
2046
|
-
*/
|
|
2047
|
-
export interface ReviewFunction {
|
|
2048
|
-
file: string;
|
|
2049
|
-
name: string;
|
|
2050
|
-
line: number;
|
|
2051
|
-
endLine: number;
|
|
2052
|
-
cyclomaticComplexity: number;
|
|
2053
|
-
/** CC at base. null when the function did not exist at base. */
|
|
2054
|
-
baseCc: number | null;
|
|
2055
|
-
/** Why this function shows up. */
|
|
2056
|
-
reason: 'added' | 'jumped' | 'crossed-threshold';
|
|
2057
|
-
/** 1.9+ — set when `projscan_review` was called with an `intent` arg. Absent otherwise. */
|
|
2058
|
-
intentAlignment?: 'expected' | 'unexpected' | 'out-of-scope' | 'unknown';
|
|
2059
|
-
}
|
|
2060
|
-
/**
|
|
2061
|
-
* 1.6+ — A taint flow that is NEW at head (not present at base). Mirrors
|
|
2062
|
-
* the core TaintFlow shape but is intentionally light — review summaries
|
|
2063
|
-
* should be readable in a glance, so we drop the per-step file list and
|
|
2064
|
-
* keep only the source/sink, the function pair, and the path length.
|
|
2065
|
-
*/
|
|
2066
|
-
export interface ReviewTaintFlow {
|
|
2067
|
-
sourceFn: string;
|
|
2068
|
-
sinkFn: string;
|
|
2069
|
-
source: string;
|
|
2070
|
-
sink: string;
|
|
2071
|
-
/** Hop count from source function to sink function, inclusive of both ends. */
|
|
2072
|
-
pathLength: number;
|
|
2073
|
-
/** First and last files in the path; same value when length = 1. */
|
|
2074
|
-
files: string[];
|
|
2075
|
-
/** 1.9+ — set when `projscan_review` was called with an `intent` arg. Absent otherwise. */
|
|
2076
|
-
intentAlignment?: 'expected' | 'unexpected' | 'out-of-scope' | 'unknown';
|
|
2077
|
-
}
|
|
2078
|
-
/**
|
|
2079
|
-
* 3.0+ — Review-time dataflow risks that are not represented by legacy
|
|
2080
|
-
* taint reachability, especially bridge helpers that call both a source
|
|
2081
|
-
* wrapper and a sink wrapper.
|
|
2082
|
-
*/
|
|
2083
|
-
export interface ReviewDataflowRisk {
|
|
2084
|
-
kind: DataflowRiskKind;
|
|
2085
|
-
sourceFn: string;
|
|
2086
|
-
sinkFn: string;
|
|
2087
|
-
bridgeFn?: string;
|
|
2088
|
-
source: string;
|
|
2089
|
-
sink: string;
|
|
2090
|
-
pathLength: number;
|
|
2091
|
-
files: string[];
|
|
2092
|
-
severity: DataflowRiskSeverity;
|
|
2093
|
-
confidence: DataflowRiskConfidence;
|
|
2094
|
-
intentAlignment?: 'expected' | 'unexpected' | 'out-of-scope' | 'unknown';
|
|
2095
|
-
}
|
|
2096
|
-
/** Workspace-package-scoped dependency change. Aggregates root + workspaces. */
|
|
2097
|
-
export interface ReviewDependencyChange {
|
|
2098
|
-
/** Workspace name; '' for the root manifest. */
|
|
2099
|
-
workspace: string;
|
|
2100
|
-
manifestFile: string;
|
|
2101
|
-
added: Array<{
|
|
2102
|
-
name: string;
|
|
2103
|
-
version: string;
|
|
2104
|
-
kind: 'dep' | 'dev';
|
|
2105
|
-
}>;
|
|
2106
|
-
removed: Array<{
|
|
2107
|
-
name: string;
|
|
2108
|
-
version: string;
|
|
2109
|
-
kind: 'dep' | 'dev';
|
|
2110
|
-
}>;
|
|
2111
|
-
bumped: Array<{
|
|
2112
|
-
name: string;
|
|
2113
|
-
from: string;
|
|
2114
|
-
to: string;
|
|
2115
|
-
kind: 'dep' | 'dev';
|
|
2116
|
-
}>;
|
|
2117
|
-
/** 1.9+ — set when `projscan_review` was called with an `intent` arg. Absent otherwise. */
|
|
2118
|
-
intentAlignment?: 'expected' | 'unexpected' | 'out-of-scope' | 'unknown';
|
|
2119
|
-
}
|
|
2120
|
-
/**
|
|
2121
|
-
* 1.5+ — `projscan_review` can shape its response at three tiers based
|
|
2122
|
-
* on a `max_cost_tokens` budget passed by the caller: full (no budget
|
|
2123
|
-
* or large budget), summary (3K-7K tokens), verdict-only (<3K).
|
|
2124
|
-
* Selected by `selectReviewTier` and surfaced as the `tier` field on
|
|
2125
|
-
* the response.
|
|
2126
|
-
*/
|
|
2127
|
-
export type ReviewTier = 'full' | 'summary' | 'verdict-only';
|
|
2128
|
-
export interface ReviewReport {
|
|
2129
|
-
available: boolean;
|
|
2130
|
-
reason?: string;
|
|
2131
|
-
base: {
|
|
2132
|
-
ref: string;
|
|
2133
|
-
resolvedSha: string | null;
|
|
2134
|
-
};
|
|
2135
|
-
head: {
|
|
2136
|
-
ref: string;
|
|
2137
|
-
resolvedSha: string | null;
|
|
2138
|
-
};
|
|
2139
|
-
/** The structural diff (same shape as projscan_pr_diff). */
|
|
2140
|
-
prDiff: PrDiffReport;
|
|
2141
|
-
/** Each changed file annotated with risk + CC + delta. Sorted by risk desc. */
|
|
2142
|
-
changedFiles: ReviewFile[];
|
|
2143
|
-
/** Cycles introduced or expanded by this PR. Empty when none. */
|
|
2144
|
-
newCycles: ReviewCycle[];
|
|
2145
|
-
/** Functions that meaningfully grew or were added with high CC. Sorted by CC desc. */
|
|
2146
|
-
riskyFunctions: ReviewFunction[];
|
|
2147
|
-
/** package.json deltas across root + workspaces. */
|
|
2148
|
-
dependencyChanges: ReviewDependencyChange[];
|
|
2149
|
-
/**
|
|
2150
|
-
* 2.1+ — additive public contract changes such as export and package
|
|
2151
|
-
* entrypoint changes. Empty or absent when no contract signal is available.
|
|
2152
|
-
*/
|
|
2153
|
-
contractChanges?: ReviewContractChange[];
|
|
2154
|
-
/**
|
|
2155
|
-
* 1.6+ — NEW source-to-sink taint flows introduced by this PR. Each
|
|
2156
|
-
* entry is a flow that exists at head but didn't exist at base
|
|
2157
|
-
* (matched by sourceFn + sinkFn pair). Empty when taint is unavailable
|
|
2158
|
-
* (no per-function callSites at either side).
|
|
2159
|
-
*/
|
|
2160
|
-
newTaintFlows: ReviewTaintFlow[];
|
|
2161
|
-
/**
|
|
2162
|
-
* 3.0+ — NEW dataflow risks introduced by this PR that are outside the
|
|
2163
|
-
* legacy source-to-sink taint flow list. Empty when unavailable or clean.
|
|
2164
|
-
*/
|
|
2165
|
-
newDataflowRisks: ReviewDataflowRisk[];
|
|
2166
|
-
/** 3.5+ — compact graph/dataflow evidence for review consumers. */
|
|
2167
|
-
graphEvidence?: GraphEvidenceSummary;
|
|
2168
|
-
/** 'ok' = ship it; 'review' = needs careful look; 'block' = strongly suggests rework. */
|
|
2169
|
-
verdict: 'ok' | 'review' | 'block';
|
|
2170
|
-
/** One-line bullets explaining the verdict. */
|
|
2171
|
-
summary: string[];
|
|
2172
|
-
/**
|
|
2173
|
-
* 1.5+ — which tier this report was shaped at. Absent when the full
|
|
2174
|
-
* report is returned without budget shaping.
|
|
2175
|
-
*/
|
|
2176
|
-
tier?: ReviewTier;
|
|
2177
|
-
/**
|
|
2178
|
-
* 1.9+ — the parsed intent the agent passed (if any). Echo of the
|
|
2179
|
-
* raw string + the parser's classified action + extracted scope
|
|
2180
|
-
* tokens. Absent when `intent` arg wasn't provided.
|
|
2181
|
-
*/
|
|
2182
|
-
intent?: {
|
|
2183
|
-
raw: string;
|
|
2184
|
-
action: 'feature' | 'fix' | 'refactor' | 'perf' | 'test' | 'docs' | 'chore' | 'remove' | 'unknown';
|
|
2185
|
-
scopeTokens: string[];
|
|
2186
|
-
};
|
|
2187
|
-
/**
|
|
2188
|
-
* 1.9+ — per-alignment totals across all findings + a small sample
|
|
2189
|
-
* of "notable" (unexpected / out-of-scope) findings. Absent when
|
|
2190
|
-
* no intent was provided. Verdict is NOT affected by intent —
|
|
2191
|
-
* verdict stays structural.
|
|
2192
|
-
*/
|
|
2193
|
-
intentAnalysis?: {
|
|
2194
|
-
totals: Record<'expected' | 'unexpected' | 'out-of-scope' | 'unknown', number>;
|
|
2195
|
-
notable: Array<{
|
|
2196
|
-
kind: 'file' | 'function' | 'cycle' | 'taint' | 'dataflow' | 'dependency';
|
|
2197
|
-
label: string;
|
|
2198
|
-
alignment: 'expected' | 'unexpected' | 'out-of-scope' | 'unknown';
|
|
2199
|
-
reason: string;
|
|
2200
|
-
}>;
|
|
2201
|
-
};
|
|
2202
|
-
}
|
|
2203
|
-
/**
|
|
2204
|
-
* One reachable file in an impact analysis. `distance` is BFS-hops from the
|
|
2205
|
-
* input target (1 = direct dependent, 2 = dependent-of-dependent, etc).
|
|
2206
|
-
* `target` itself is not included in the reachable list.
|
|
2207
|
-
*/
|
|
2208
|
-
export interface ImpactNode {
|
|
2209
|
-
file: string;
|
|
2210
|
-
distance: number;
|
|
2211
|
-
/**
|
|
2212
|
-
* 1.6+ — name of the registered repo that contains this file.
|
|
2213
|
-
* Present only when `cross_repo: true` was passed and the file
|
|
2214
|
-
* lives outside the source repo. Absent for in-repo entries.
|
|
2215
|
-
*/
|
|
2216
|
-
repo?: string;
|
|
2217
|
-
}
|
|
2218
|
-
export interface ImpactBoundarySummary {
|
|
2219
|
-
repo: string;
|
|
2220
|
-
packageName: string;
|
|
2221
|
-
owner: string;
|
|
2222
|
-
files: string[];
|
|
2223
|
-
reachableFiles: number;
|
|
2224
|
-
}
|
|
2225
|
-
export interface ImpactReport {
|
|
2226
|
-
available: boolean;
|
|
2227
|
-
reason?: string;
|
|
2228
|
-
/** What was queried. */
|
|
2229
|
-
target: {
|
|
2230
|
-
kind: 'file' | 'symbol';
|
|
2231
|
-
value: string;
|
|
2232
|
-
};
|
|
2233
|
-
/**
|
|
2234
|
-
* For symbol mode: every file the graph claims defines the symbol. Empty
|
|
2235
|
-
* for file mode. Useful when an agent needs to know whether a name is
|
|
2236
|
-
* defined in multiple places before treating impact as authoritative.
|
|
2237
|
-
*/
|
|
2238
|
-
definitionFiles: string[];
|
|
2239
|
-
/**
|
|
2240
|
-
* For symbol mode: files that directly call the symbol (their callSites
|
|
2241
|
-
* contains the name). The reachable set is computed from these as roots.
|
|
2242
|
-
* Empty for file mode.
|
|
2243
|
-
*/
|
|
2244
|
-
directCallers: string[];
|
|
2245
|
-
/** Sorted by distance asc, then file asc. */
|
|
2246
|
-
reachable: ImpactNode[];
|
|
2247
|
-
/** Convenience count of reachable files (== reachable.length). */
|
|
2248
|
-
totalReachable: number;
|
|
2249
|
-
/**
|
|
2250
|
-
* 1.6+ — when cross-repo expansion ran, this is the per-repo
|
|
2251
|
-
* breakdown of reachable file counts. Absent when `cross_repo`
|
|
2252
|
-
* was false or the workspace had no siblings.
|
|
2253
|
-
*/
|
|
2254
|
-
totalReachableByRepo?: Record<string, number>;
|
|
2255
|
-
/** 3.5+ — cross-repo package/ownership boundaries that mention the target. */
|
|
2256
|
-
boundarySummary?: ImpactBoundarySummary[];
|
|
2257
|
-
/**
|
|
2258
|
-
* True when traversal hit `maxDistance` before exhausting the graph.
|
|
2259
|
-
* Items beyond the limit are omitted from `reachable`.
|
|
2260
|
-
*/
|
|
2261
|
-
truncated: boolean;
|
|
2262
|
-
/** The maxDistance value used for the traversal. */
|
|
2263
|
-
maxDistance: number;
|
|
2264
|
-
}
|
|
2265
|
-
export interface FileInspection {
|
|
2266
|
-
relativePath: string;
|
|
2267
|
-
exists: boolean;
|
|
2268
|
-
reason?: string;
|
|
2269
|
-
purpose: string;
|
|
2270
|
-
lineCount: number;
|
|
2271
|
-
sizeBytes: number;
|
|
2272
|
-
imports: ImportInfo[];
|
|
2273
|
-
exports: ExportInfo[];
|
|
2274
|
-
potentialIssues: string[];
|
|
2275
|
-
hotspot: FileHotspot | null;
|
|
2276
|
-
issues: Issue[];
|
|
2277
|
-
/** AST-derived McCabe complexity. null when no language adapter parsed this file. */
|
|
2278
|
-
cyclomaticComplexity?: number | null;
|
|
2279
|
-
/** Number of files that import this one. null when graph unavailable. */
|
|
2280
|
-
fanIn?: number | null;
|
|
2281
|
-
/** Number of locally-resolved imports this file makes. null when graph unavailable. */
|
|
2282
|
-
fanOut?: number | null;
|
|
2283
|
-
/** Adapter id (e.g. 'javascript', 'python'). Set when the graph was available. */
|
|
2284
|
-
language?: string;
|
|
2285
|
-
/**
|
|
2286
|
-
* Per-function McCabe CC (0.13.0+). Sorted by cyclomaticComplexity desc.
|
|
2287
|
-
* Empty array when the file has no functions or the adapter doesn't yet
|
|
2288
|
-
* support per-function granularity.
|
|
2289
|
-
*/
|
|
2290
|
-
functions?: FunctionDetail[];
|
|
2291
|
-
}
|
|
2292
|
-
/**
|
|
2293
|
-
* Per-function CC entry exposed via projscan_file. Mirrors the internal
|
|
2294
|
-
* `FunctionInfo` from `core/ast.ts` but is part of the stable API surface.
|
|
2295
|
-
*/
|
|
2296
|
-
export interface FunctionDetail {
|
|
2297
|
-
name: string;
|
|
2298
|
-
/** 1-based start line. */
|
|
2299
|
-
line: number;
|
|
2300
|
-
/** 1-based end line. */
|
|
2301
|
-
endLine: number;
|
|
2302
|
-
cyclomaticComplexity: number;
|
|
2303
|
-
/**
|
|
2304
|
-
* Approximate fan-in (0.15.0+): count of other files whose `callSites`
|
|
2305
|
-
* include this function's bare name. Name-based and approximate; absent
|
|
2306
|
-
* when the graph couldn't compute it.
|
|
2307
|
-
*/
|
|
2308
|
-
fanIn?: number;
|
|
2309
|
-
}
|
|
2310
|
-
/**
|
|
2311
|
-
* A reversible deprecation marker (3.8 deprecation pass). Present on a tool
|
|
2312
|
-
* means "still works, but slated for removal in 4.0 — prefer `replacedBy`".
|
|
2313
|
-
*/
|
|
2314
|
-
export interface ToolDeprecation {
|
|
2315
|
-
/** Version the deprecation was announced in (e.g. "3.8.0"). */
|
|
2316
|
-
since: string;
|
|
2317
|
-
/** The recommended replacement (tool name for MCP, invocation for CLI). */
|
|
2318
|
-
replacedBy: string;
|
|
2319
|
-
/** Optional one-line rationale shown to humans/agents. */
|
|
2320
|
-
note?: string;
|
|
2321
|
-
}
|
|
2322
|
-
export interface McpToolDefinition {
|
|
2323
|
-
name: string;
|
|
2324
|
-
description: string;
|
|
2325
|
-
inputSchema: {
|
|
2326
|
-
type: 'object';
|
|
2327
|
-
properties: Record<string, unknown>;
|
|
2328
|
-
required?: string[];
|
|
2329
|
-
};
|
|
2330
|
-
/** Set when the tool is deprecated and scheduled for removal in 4.0. */
|
|
2331
|
-
deprecated?: ToolDeprecation;
|
|
2332
|
-
}
|
|
2333
|
-
export interface McpPromptArgument {
|
|
2334
|
-
name: string;
|
|
2335
|
-
description: string;
|
|
2336
|
-
required?: boolean;
|
|
2337
|
-
}
|
|
2338
|
-
export interface McpPromptDefinition {
|
|
2339
|
-
name: string;
|
|
2340
|
-
description: string;
|
|
2341
|
-
arguments?: McpPromptArgument[];
|
|
2342
|
-
}
|
|
2343
|
-
export interface McpResourceDefinition {
|
|
2344
|
-
uri: string;
|
|
2345
|
-
name: string;
|
|
2346
|
-
description: string;
|
|
2347
|
-
mimeType: string;
|
|
2348
|
-
}
|
|
1
|
+
export type { ExportInfo, ImportInfo, Issue, IssueLocation, IssueSeverity, } from './types/common.js';
|
|
2
|
+
export type { AnalysisReport, ArchitectureLayer, FileExplanation, HealthScore, } from './types/analysis.js';
|
|
3
|
+
export type { ImportPolicyRule, LoadedConfig, ProjscanConfig, ReportFormat, } from './types/config.js';
|
|
4
|
+
export type { CouplingReport, CrossPackageEdge, FileCoupling, ImportCycle, } from './types/coupling.js';
|
|
5
|
+
export type { ExportRename, FileAstDiff, PrDiffReport } from './types/prDiff.js';
|
|
6
|
+
export type { Baseline, BaselineHotspot, BaselineRecurringRule, BaselineTrend, DiffResult, HotspotDelta, HotspotDiffSummary, } from './types/baseline.js';
|
|
7
|
+
export type { AuditFinding, AuditReport, AuditSeverity, OutdatedPackage, OutdatedReport, SemverDrift, UpgradePreview, } from './types/dependencyHealth.js';
|
|
8
|
+
export type { CoverageJoinedHotspot, CoverageJoinedReport, CoverageReport, CoverageSource, FileCoverage, } from './types/coverage.js';
|
|
9
|
+
export type { Fix, FixResult, FixSuggestion, IssueExplanation } from './types/fixes.js';
|
|
10
|
+
export type { DataflowReport, DataflowRisk, DataflowRiskConfidence, DataflowRiskKind, DataflowRiskSeverity, GraphEvidenceSummary, SemanticGraphEdge, SemanticGraphEdgeKind, SemanticGraphNode, SemanticGraphNodeKind, SemanticGraphReport, } from './types/graph.js';
|
|
11
|
+
export type { GraphCorpusFixtureMetrics, GraphCorpusReport } from './types/graphCorpus.js';
|
|
12
|
+
export type { AuthorShare, FileHotspot, HotspotReport } from './types/hotspots.js';
|
|
13
|
+
export type { ImpactBoundarySummary, ImpactNode, ImpactReport } from './types/impact.js';
|
|
14
|
+
export type { FileInspection, FunctionDetail } from './types/inspection.js';
|
|
15
|
+
export type { McpPromptArgument, McpPromptDefinition, McpResourceDefinition, McpToolDefinition, ToolDeprecation, } from './types/mcp.js';
|
|
16
|
+
export type { DependencyLicenseEntry, DependencyLicenseSummary, DependencyReport, DependencyRisk, DependencySizeEntry, DependencySizeSummary, DetectedFramework, DirectoryNode, FileEntry, FrameworkResult, LanguageBreakdown, LanguageStat, ScanBoundary, ScanResult, } from './types/scanning.js';
|
|
17
|
+
export type { PreflightEvidence, PreflightMode, PreflightReason, PreflightReasonSource, PreflightReleaseScaleEvidence, PreflightReport, PreflightRequiredCheck, PreflightSuggestedAction, PreflightVerdict, } from './types/preflight.js';
|
|
18
|
+
export type { FixFirstRecommendation, WorkplanCoordination, WorkplanEvidence, WorkplanMode, WorkplanPriority, WorkplanReport, WorkplanTask, WorkplanTopRisk, WorkplanVerification, } from './types/workplan.js';
|
|
19
|
+
export type { WorkplanHandoffPayload } from './types/workplanHandoff.js';
|
|
20
|
+
export type { ReleaseTrainReport, ReleaseTrainTask, ReleaseTrainTrack, } from './types/releaseTrain.js';
|
|
21
|
+
export type { BugHuntFinding, BugHuntReport, BugHuntVerdict } from './types/bugHunt.js';
|
|
22
|
+
export type { EvidencePackArtifact, EvidencePackArtifactStatus, EvidencePackPrCommentValidation, EvidencePackPrCommentValidationCheck, EvidencePackPrSummary, EvidencePackReport, EvidencePackTeamRoute, EvidencePackTopRisk, EvidencePackTrustCalibration, EvidencePackVerdict, } from './types/evidencePack.js';
|
|
23
|
+
export type { DogfoodFeedbackInput, DogfoodFeedbackResponse, DogfoodMarketValidation, DogfoodReport, DogfoodRepoResult, DogfoodRepoStatus, DogfoodRepoValidation, DogfoodWebsiteProof, FeedbackSummaryReport, FeedbackTemplateResult, } from './types/dogfood.js';
|
|
24
|
+
export type { TrialReport, TrialVerdict } from './types/trial.js';
|
|
25
|
+
export type { UnderstandBoundary, UnderstandBreakingChangeRisk, UnderstandChangeReadiness, UnderstandCitation, UnderstandClaim, UnderstandConfigContract, UnderstandContracts, UnderstandDirectTest, UnderstandEntrypoint, UnderstandFlow, UnderstandFlowSideEffect, UnderstandPublicExport, UnderstandReadFirst, UnderstandReport, UnderstandRisk, UnderstandUnknown, UnderstandVerification, UnderstandVerificationTier, UnderstandView, } from './types/understand.js';
|
|
26
|
+
export type { QualityScorecardDimension, QualityScorecardReport, QualityScorecardRisk, QualityScorecardStatus, QualityScorecardVerdict, } from './types/qualityScorecard.js';
|
|
27
|
+
export type { RegressionPlanLevel, RegressionPlanReport, RegressionPlanTarget, RegressionPlanVerdict, } from './types/regressionPlan.js';
|
|
28
|
+
export type { MissionOutcome, MissionProofBaselineRun, MissionProofReport, MissionProofStatusRow, MissionProofTotals, MissionReviewDecisionRecord, MissionRunStatus, StartAdoptionGap, StartAdoptionLoop, StartAdoptionLoopMetric, StartExecutionCursor, StartExecutionPhase, StartExecutionPhaseId, StartExecutionPlan, StartExecutionStatus, StartExecutionStep, StartExecutionStepKind, StartFirstTenMinutes, StartFirstTenMinutesStep, StartMissionControl, StartMissionControlStatus, StartMissionHandoff, StartMissionInputBinding, StartMissionProofItem, StartMissionProofToolCall, StartMissionResume, StartMissionResumeChecklistItem, StartMissionResumeChecklistItemKind, StartMissionResumeFollowUp, StartMissionResumeReference, StartMissionReviewBlockedAction, StartMissionReviewDecision, StartMissionReviewGate, StartMissionReviewPolicy, StartMissionReviewProof, StartMissionReviewWorktree, StartMissionRunbook, StartMissionTaskCard, StartMissionToolCall, StartModeSource, StartReport, StartRisk, StartRoutedIntent, StartUnresolvedInput, StartWorkflowRecommendation, } from './types/start.js';
|
|
29
|
+
export type { AgentBriefGuardrail, AgentBriefIntent, AgentBriefItem, AgentBriefReport, } from './types/agentBrief.js';
|
|
30
|
+
export type { RiskNowResource, SessionConflict, SessionCoordinationHint, SessionHandoff, SessionResourceSummary, } from './types/session.js';
|
|
31
|
+
export type { PluginTestResult } from './types/pluginDx.js';
|
|
32
|
+
export type { ReviewContractChange } from './types/reviewContract.js';
|
|
33
|
+
export type { ReviewCycle, ReviewDataflowRisk, ReviewDependencyChange, ReviewFile, ReviewFunction, ReviewReport, ReviewTaintFlow, ReviewTier, } from './types/review.js';
|
|
34
|
+
export type { WorkspaceInfo, WorkspaceKind, WorkspacePackage } from './types/workspace.js';
|