projscan 4.6.0 → 4.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +25 -12
- package/dist/cli/_shared.js +12 -44
- package/dist/cli/_shared.js.map +1 -1
- package/dist/cli/changedOnly.d.ts +16 -0
- package/dist/cli/changedOnly.js +28 -0
- package/dist/cli/changedOnly.js.map +1 -0
- package/dist/cli/commands/start.js +5 -28
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/cli/commands/startOptionsRegistration.d.ts +2 -0
- package/dist/cli/commands/startOptionsRegistration.js +29 -0
- package/dist/cli/commands/startOptionsRegistration.js.map +1 -0
- package/dist/cli/formatOptions.d.ts +4 -0
- package/dist/cli/formatOptions.js +30 -0
- package/dist/cli/formatOptions.js.map +1 -0
- package/dist/core/agentBrief.js +6 -1
- package/dist/core/agentBrief.js.map +1 -1
- package/dist/core/ast.d.ts +2 -17
- package/dist/core/ast.js +4 -33
- package/dist/core/ast.js.map +1 -1
- package/dist/core/astBodySignals.js +2 -3
- package/dist/core/astBodySignals.js.map +1 -1
- package/dist/core/astMembers.d.ts +1 -0
- package/dist/core/astMembers.js +38 -9
- package/dist/core/astMembers.js.map +1 -1
- package/dist/core/astResult.d.ts +20 -0
- package/dist/core/astResult.js +39 -0
- package/dist/core/astResult.js.map +1 -0
- package/dist/core/bugHunt.js +2 -142
- package/dist/core/bugHunt.js.map +1 -1
- package/dist/core/bugHuntHotspotFindings.d.ts +2 -0
- package/dist/core/bugHuntHotspotFindings.js +68 -0
- package/dist/core/bugHuntHotspotFindings.js.map +1 -0
- package/dist/core/bugHuntPreflightFindings.d.ts +3 -0
- package/dist/core/bugHuntPreflightFindings.js +115 -0
- package/dist/core/bugHuntPreflightFindings.js.map +1 -0
- package/dist/core/codeGraph.d.ts +2 -24
- package/dist/core/codeGraph.js +8 -119
- package/dist/core/codeGraph.js.map +1 -1
- package/dist/core/codeGraphAdapterContexts.d.ts +8 -0
- package/dist/core/codeGraphAdapterContexts.js +14 -0
- package/dist/core/codeGraphAdapterContexts.js.map +1 -0
- package/dist/core/codeGraphFileSelection.d.ts +7 -0
- package/dist/core/codeGraphFileSelection.js +19 -0
- package/dist/core/codeGraphFileSelection.js.map +1 -0
- package/dist/core/codeGraphIncremental.d.ts +17 -0
- package/dist/core/codeGraphIncremental.js +64 -0
- package/dist/core/codeGraphIncremental.js.map +1 -0
- package/dist/core/codeGraphQueries.d.ts +9 -0
- package/dist/core/codeGraphQueries.js +25 -0
- package/dist/core/codeGraphQueries.js.map +1 -0
- package/dist/core/collisionDetector.d.ts +1 -0
- package/dist/core/collisionDetector.js +3 -0
- package/dist/core/collisionDetector.js.map +1 -1
- package/dist/core/coordination.js +23 -5
- package/dist/core/coordination.js.map +1 -1
- package/dist/core/coordinationEvidence.d.ts +1 -0
- package/dist/core/coordinationEvidence.js.map +1 -1
- package/dist/core/dataflow.js +3 -338
- package/dist/core/dataflow.js.map +1 -1
- package/dist/core/dataflowDatabaseSinks.d.ts +8 -0
- package/dist/core/dataflowDatabaseSinks.js +78 -0
- package/dist/core/dataflowDatabaseSinks.js.map +1 -0
- package/dist/core/dataflowRiskAssembly.d.ts +11 -0
- package/dist/core/dataflowRiskAssembly.js +117 -0
- package/dist/core/dataflowRiskAssembly.js.map +1 -0
- package/dist/core/dataflowTraversal.d.ts +25 -0
- package/dist/core/dataflowTraversal.js +200 -0
- package/dist/core/dataflowTraversal.js.map +1 -0
- package/dist/core/fileInspectionReport.d.ts +13 -0
- package/dist/core/fileInspectionReport.js +49 -0
- package/dist/core/fileInspectionReport.js.map +1 -0
- package/dist/core/fileInspector.d.ts +3 -11
- package/dist/core/fileInspector.js +2 -46
- package/dist/core/fileInspector.js.map +1 -1
- package/dist/core/fixSuggest.d.ts +1 -9
- package/dist/core/fixSuggest.js +2 -58
- package/dist/core/fixSuggest.js.map +1 -1
- package/dist/core/fixSuggestDependencyNames.d.ts +1 -0
- package/dist/core/fixSuggestDependencyNames.js +9 -0
- package/dist/core/fixSuggestDependencyNames.js.map +1 -0
- package/dist/core/fixSuggestPreview.d.ts +10 -0
- package/dist/core/fixSuggestPreview.js +87 -0
- package/dist/core/fixSuggestPreview.js.map +1 -0
- package/dist/core/frameworkExpressSources.js +6 -31
- package/dist/core/frameworkExpressSources.js.map +1 -1
- package/dist/core/frameworkFastifySources.js +5 -22
- package/dist/core/frameworkFastifySources.js.map +1 -1
- package/dist/core/frameworkHonoSources.js +12 -24
- package/dist/core/frameworkHonoSources.js.map +1 -1
- package/dist/core/frameworkKoaSources.js +5 -24
- package/dist/core/frameworkKoaSources.js.map +1 -1
- package/dist/core/frameworkNextRouteSources.d.ts +6 -1
- package/dist/core/frameworkNextRouteSources.js +31 -1
- package/dist/core/frameworkNextRouteSources.js.map +1 -1
- package/dist/core/frameworkRemixSources.d.ts +2 -0
- package/dist/core/frameworkRemixSources.js +63 -0
- package/dist/core/frameworkRemixSources.js.map +1 -0
- package/dist/core/frameworkSourceContext.d.ts +15 -0
- package/dist/core/frameworkSourceContext.js +2 -0
- package/dist/core/frameworkSourceContext.js.map +1 -0
- package/dist/core/frameworkSourceMatching.d.ts +6 -0
- package/dist/core/frameworkSourceMatching.js +29 -0
- package/dist/core/frameworkSourceMatching.js.map +1 -0
- package/dist/core/frameworkSourceResolvers.d.ts +2 -0
- package/dist/core/frameworkSourceResolvers.js +45 -0
- package/dist/core/frameworkSourceResolvers.js.map +1 -0
- package/dist/core/frameworkSources.d.ts +3 -3
- package/dist/core/frameworkSources.js +17 -15
- package/dist/core/frameworkSources.js.map +1 -1
- package/dist/core/frameworkSvelteKitSources.d.ts +2 -0
- package/dist/core/frameworkSvelteKitSources.js +118 -0
- package/dist/core/frameworkSvelteKitSources.js.map +1 -0
- package/dist/core/intentRouter.d.ts +4 -14
- package/dist/core/intentRouter.js +2 -33
- package/dist/core/intentRouter.js.map +1 -1
- package/dist/core/intentRouterCatalog.js +49 -0
- package/dist/core/intentRouterCatalog.js.map +1 -1
- package/dist/core/intentRouterKeywordToolGuards.js +5 -0
- package/dist/core/intentRouterKeywordToolGuards.js.map +1 -1
- package/dist/core/intentRouterKeywordWeights.js +36 -0
- package/dist/core/intentRouterKeywordWeights.js.map +1 -1
- package/dist/core/intentRouterReleaseSignals.js +104 -39
- package/dist/core/intentRouterReleaseSignals.js.map +1 -1
- package/dist/core/intentRouterResolution.d.ts +3 -0
- package/dist/core/intentRouterResolution.js +11 -0
- package/dist/core/intentRouterResolution.js.map +1 -0
- package/dist/core/intentRouterResult.d.ts +16 -0
- package/dist/core/intentRouterResult.js +34 -0
- package/dist/core/intentRouterResult.js.map +1 -0
- package/dist/core/intentRouterWorkSignals.js +18 -0
- package/dist/core/intentRouterWorkSignals.js.map +1 -1
- package/dist/core/languages/pythonLockfiles.d.ts +4 -0
- package/dist/core/languages/pythonLockfiles.js +6 -2
- package/dist/core/languages/pythonLockfiles.js.map +1 -1
- package/dist/core/languages/pythonManifests.js +11 -24
- package/dist/core/languages/pythonManifests.js.map +1 -1
- package/dist/core/languages/pythonPep508.js +1 -1
- package/dist/core/languages/pythonPep508.js.map +1 -1
- package/dist/core/languages/pythonProjectEvidence.js +4 -4
- package/dist/core/languages/pythonProjectEvidence.js.map +1 -1
- package/dist/core/languages/pythonPyproject.js +1 -1
- package/dist/core/languages/pythonPyproject.js.map +1 -1
- package/dist/core/languages/pythonPyprojectEvidence.d.ts +7 -0
- package/dist/core/languages/pythonPyprojectEvidence.js +23 -0
- package/dist/core/languages/pythonPyprojectEvidence.js.map +1 -0
- package/dist/core/languages/pythonRequirements.d.ts +2 -0
- package/dist/core/languages/pythonRequirements.js +215 -24
- package/dist/core/languages/pythonRequirements.js.map +1 -1
- package/dist/core/pluginAnalyzerLoading.d.ts +3 -0
- package/dist/core/pluginAnalyzerLoading.js +55 -0
- package/dist/core/pluginAnalyzerLoading.js.map +1 -0
- package/dist/core/pluginAnalyzerRunning.d.ts +10 -0
- package/dist/core/pluginAnalyzerRunning.js +32 -0
- package/dist/core/pluginAnalyzerRunning.js.map +1 -0
- package/dist/core/pluginIssueValidation.d.ts +2 -0
- package/dist/core/pluginIssueValidation.js +22 -0
- package/dist/core/pluginIssueValidation.js.map +1 -0
- package/dist/core/pluginManifestDiscovery.d.ts +25 -0
- package/dist/core/pluginManifestDiscovery.js +80 -0
- package/dist/core/pluginManifestDiscovery.js.map +1 -0
- package/dist/core/pluginManifestValidation.d.ts +41 -0
- package/dist/core/pluginManifestValidation.js +179 -0
- package/dist/core/pluginManifestValidation.js.map +1 -0
- package/dist/core/pluginModuleLoading.d.ts +8 -0
- package/dist/core/pluginModuleLoading.js +91 -0
- package/dist/core/pluginModuleLoading.js.map +1 -0
- package/dist/core/pluginReporterLoading.d.ts +41 -0
- package/dist/core/pluginReporterLoading.js +105 -0
- package/dist/core/pluginReporterLoading.js.map +1 -0
- package/dist/core/pluginRuntimeTypes.d.ts +20 -0
- package/dist/core/pluginRuntimeTypes.js +2 -0
- package/dist/core/pluginRuntimeTypes.js.map +1 -0
- package/dist/core/plugins.d.ts +11 -126
- package/dist/core/plugins.js +13 -478
- package/dist/core/plugins.js.map +1 -1
- package/dist/core/preflight.d.ts +1 -2
- package/dist/core/preflight.js +4 -91
- package/dist/core/preflight.js.map +1 -1
- package/dist/core/preflightEvidence.js +11 -0
- package/dist/core/preflightEvidence.js.map +1 -1
- package/dist/core/preflightInputs.d.ts +1 -0
- package/dist/core/preflightInputs.js.map +1 -1
- package/dist/core/preflightReasons.d.ts +21 -0
- package/dist/core/preflightReasons.js +28 -0
- package/dist/core/preflightReasons.js.map +1 -0
- package/dist/core/preflightReport.d.ts +9 -0
- package/dist/core/preflightReport.js +67 -0
- package/dist/core/preflightReport.js.map +1 -0
- package/dist/core/regressionPlan.d.ts +2 -1
- package/dist/core/regressionPlan.js +7 -1
- package/dist/core/regressionPlan.js.map +1 -1
- package/dist/core/releaseEvidence.js +6 -120
- package/dist/core/releaseEvidence.js.map +1 -1
- package/dist/core/releaseEvidenceArtifacts.d.ts +3 -0
- package/dist/core/releaseEvidenceArtifacts.js +65 -0
- package/dist/core/releaseEvidenceArtifacts.js.map +1 -0
- package/dist/core/releaseEvidenceVerdict.d.ts +6 -0
- package/dist/core/releaseEvidenceVerdict.js +54 -0
- package/dist/core/releaseEvidenceVerdict.js.map +1 -0
- package/dist/core/reportPathRedaction.d.ts +4 -0
- package/dist/core/reportPathRedaction.js +64 -0
- package/dist/core/reportPathRedaction.js.map +1 -0
- package/dist/core/reportScope.js +2 -163
- package/dist/core/reportScope.js.map +1 -1
- package/dist/core/reportScopeFiltering.d.ts +9 -0
- package/dist/core/reportScopeFiltering.js +102 -0
- package/dist/core/reportScopeFiltering.js.map +1 -0
- package/dist/core/review.js +2 -47
- package/dist/core/review.js.map +1 -1
- package/dist/core/reviewChangedReport.d.ts +13 -0
- package/dist/core/reviewChangedReport.js +38 -0
- package/dist/core/reviewChangedReport.js.map +1 -0
- package/dist/core/reviewComputation.d.ts +9 -0
- package/dist/core/reviewComputation.js +14 -0
- package/dist/core/reviewComputation.js.map +1 -0
- package/dist/core/reviewContractChanges.js +22 -8
- package/dist/core/reviewContractChanges.js.map +1 -1
- package/dist/core/reviewDataflow.js +18 -0
- package/dist/core/reviewDataflow.js.map +1 -1
- package/dist/core/roadmapCatalog.js +7 -203
- package/dist/core/roadmapCatalog.js.map +1 -1
- package/dist/core/roadmapCatalogPost44.d.ts +2 -0
- package/dist/core/roadmapCatalogPost44.js +205 -0
- package/dist/core/roadmapCatalogPost44.js.map +1 -0
- package/dist/core/roadmapCatalogTypes.d.ts +6 -0
- package/dist/core/roadmapCatalogTypes.js +2 -0
- package/dist/core/roadmapCatalogTypes.js.map +1 -0
- package/dist/core/searchIndex.d.ts +2 -14
- package/dist/core/searchIndex.js +4 -227
- package/dist/core/searchIndex.js.map +1 -1
- package/dist/core/searchIndexFiles.d.ts +1 -0
- package/dist/core/searchIndexFiles.js +26 -0
- package/dist/core/searchIndexFiles.js.map +1 -0
- package/dist/core/searchIndexText.d.ts +15 -0
- package/dist/core/searchIndexText.js +204 -0
- package/dist/core/searchIndexText.js.map +1 -0
- package/dist/core/start.js +5 -46
- package/dist/core/start.js.map +1 -1
- package/dist/core/startClaimRouteCriteria.d.ts +7 -0
- package/dist/core/startClaimRouteCriteria.js +16 -0
- package/dist/core/startClaimRouteCriteria.js.map +1 -0
- package/dist/core/startCouplingRouteCriteria.d.ts +2 -0
- package/dist/core/startCouplingRouteCriteria.js +13 -0
- package/dist/core/startCouplingRouteCriteria.js.map +1 -0
- package/dist/core/startDependencyRouteCriteria.d.ts +2 -0
- package/dist/core/startDependencyRouteCriteria.js +43 -0
- package/dist/core/startDependencyRouteCriteria.js.map +1 -0
- package/dist/core/startEvidence.d.ts +1 -1
- package/dist/core/startEvidence.js +16 -1
- package/dist/core/startEvidence.js.map +1 -1
- package/dist/core/startFileRouteCriteria.d.ts +2 -0
- package/dist/core/startFileRouteCriteria.js +56 -0
- package/dist/core/startFileRouteCriteria.js.map +1 -0
- package/dist/core/startFixedRouteCriteria.d.ts +1 -0
- package/dist/core/startFixedRouteCriteria.js +90 -0
- package/dist/core/startFixedRouteCriteria.js.map +1 -0
- package/dist/core/startImpactRouteCriteria.d.ts +7 -0
- package/dist/core/startImpactRouteCriteria.js +14 -0
- package/dist/core/startImpactRouteCriteria.js.map +1 -0
- package/dist/core/startInputs.d.ts +1 -0
- package/dist/core/startInputs.js +4 -1
- package/dist/core/startInputs.js.map +1 -1
- package/dist/core/startIntentTargets.d.ts +1 -0
- package/dist/core/startIntentTargets.js +28 -0
- package/dist/core/startIntentTargets.js.map +1 -1
- package/dist/core/startMissionControl.js +8 -2
- package/dist/core/startMissionControl.js.map +1 -1
- package/dist/core/startMissionPolicy.js +12 -0
- package/dist/core/startMissionPolicy.js.map +1 -1
- package/dist/core/startMode.d.ts +1 -0
- package/dist/core/startMode.js +10 -2
- package/dist/core/startMode.js.map +1 -1
- package/dist/core/startPreflightRouteCriteria.d.ts +11 -0
- package/dist/core/startPreflightRouteCriteria.js +29 -0
- package/dist/core/startPreflightRouteCriteria.js.map +1 -0
- package/dist/core/startProductPlanningRouteCriteria.d.ts +8 -0
- package/dist/core/startProductPlanningRouteCriteria.js +29 -0
- package/dist/core/startProductPlanningRouteCriteria.js.map +1 -0
- package/dist/core/startRegressionRouteCriteria.d.ts +3 -0
- package/dist/core/startRegressionRouteCriteria.js +62 -0
- package/dist/core/startRegressionRouteCriteria.js.map +1 -0
- package/dist/core/startReportBuilder.d.ts +1 -0
- package/dist/core/startReportBuilder.js +1 -0
- package/dist/core/startReportBuilder.js.map +1 -1
- package/dist/core/startReportContext.d.ts +23 -0
- package/dist/core/startReportContext.js +51 -0
- package/dist/core/startReportContext.js.map +1 -0
- package/dist/core/startRoadmapPreview.d.ts +2 -0
- package/dist/core/startRoadmapPreview.js +31 -0
- package/dist/core/startRoadmapPreview.js.map +1 -0
- package/dist/core/startRouteActions.js +39 -1
- package/dist/core/startRouteActions.js.map +1 -1
- package/dist/core/startSuccessCriteria.d.ts +2 -3
- package/dist/core/startSuccessCriteria.js +15 -419
- package/dist/core/startSuccessCriteria.js.map +1 -1
- package/dist/core/startUnderstandRouteCriteria.d.ts +3 -0
- package/dist/core/startUnderstandRouteCriteria.js +97 -0
- package/dist/core/startUnderstandRouteCriteria.js.map +1 -0
- package/dist/core/taint.d.ts +2 -67
- package/dist/core/taint.js +41 -164
- package/dist/core/taint.js.map +1 -1
- package/dist/core/taintIndex.d.ts +20 -0
- package/dist/core/taintIndex.js +81 -0
- package/dist/core/taintIndex.js.map +1 -0
- package/dist/core/taintTraversal.d.ts +8 -0
- package/dist/core/taintTraversal.js +113 -0
- package/dist/core/taintTraversal.js.map +1 -0
- package/dist/core/taintTypes.d.ts +67 -0
- package/dist/core/taintTypes.js +2 -0
- package/dist/core/taintTypes.js.map +1 -0
- package/dist/core/telemetry.d.ts +9 -89
- package/dist/core/telemetry.js +35 -387
- package/dist/core/telemetry.js.map +1 -1
- package/dist/core/telemetryConfig.d.ts +58 -0
- package/dist/core/telemetryConfig.js +171 -0
- package/dist/core/telemetryConfig.js.map +1 -0
- package/dist/core/telemetryEvents.d.ts +57 -0
- package/dist/core/telemetryEvents.js +143 -0
- package/dist/core/telemetryEvents.js.map +1 -0
- package/dist/core/telemetryFlushing.d.ts +10 -0
- package/dist/core/telemetryFlushing.js +42 -0
- package/dist/core/telemetryFlushing.js.map +1 -0
- package/dist/core/telemetryRecording.d.ts +26 -0
- package/dist/core/telemetryRecording.js +38 -0
- package/dist/core/telemetryRecording.js.map +1 -0
- package/dist/core/telemetrySender.d.ts +9 -0
- package/dist/core/telemetrySender.js +22 -0
- package/dist/core/telemetrySender.js.map +1 -0
- package/dist/core/upgradePreviewPython.js +1 -1
- package/dist/core/upgradePreviewPython.js.map +1 -1
- package/dist/index.d.ts +4 -60
- package/dist/index.js +4 -60
- package/dist/index.js.map +1 -1
- package/dist/mcp/server.js +2 -13
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/serverMessageHandling.d.ts +3 -0
- package/dist/mcp/serverMessageHandling.js +16 -0
- package/dist/mcp/serverMessageHandling.js.map +1 -0
- package/dist/mcp/toolDefinitions.d.ts +3 -0
- package/dist/mcp/toolDefinitions.js +15 -0
- package/dist/mcp/toolDefinitions.js.map +1 -0
- package/dist/mcp/tools.js +2 -13
- package/dist/mcp/tools.js.map +1 -1
- package/dist/projscan-sbom.cdx.json +6 -6
- package/dist/publicAgent.d.ts +22 -0
- package/dist/publicAgent.js +23 -0
- package/dist/publicAgent.js.map +1 -0
- package/dist/publicCore.d.ts +29 -0
- package/dist/publicCore.js +30 -0
- package/dist/publicCore.js.map +1 -0
- package/dist/publicLanguages.d.ts +1 -0
- package/dist/publicLanguages.js +2 -0
- package/dist/publicLanguages.js.map +1 -0
- package/dist/publicMcp.d.ts +8 -0
- package/dist/publicMcp.js +9 -0
- package/dist/publicMcp.js.map +1 -0
- package/dist/reporters/consoleFixReporter.d.ts +3 -0
- package/dist/reporters/consoleFixReporter.js +41 -0
- package/dist/reporters/consoleFixReporter.js.map +1 -0
- package/dist/reporters/consoleReporter.d.ts +1 -3
- package/dist/reporters/consoleReporter.js +1 -42
- package/dist/reporters/consoleReporter.js.map +1 -1
- package/dist/reporters/htmlAnalysisReporter.d.ts +3 -0
- package/dist/reporters/htmlAnalysisReporter.js +98 -0
- package/dist/reporters/htmlAnalysisReporter.js.map +1 -0
- package/dist/reporters/htmlCoverageReporter.d.ts +2 -0
- package/dist/reporters/htmlCoverageReporter.js +52 -0
- package/dist/reporters/htmlCoverageReporter.js.map +1 -0
- package/dist/reporters/htmlImpactReporter.d.ts +2 -0
- package/dist/reporters/htmlImpactReporter.js +41 -0
- package/dist/reporters/htmlImpactReporter.js.map +1 -0
- package/dist/reporters/htmlPrDiffReporter.d.ts +2 -0
- package/dist/reporters/htmlPrDiffReporter.js +84 -0
- package/dist/reporters/htmlPrDiffReporter.js.map +1 -0
- package/dist/reporters/htmlReporter.d.ts +20 -9
- package/dist/reporters/htmlReporter.js +7 -365
- package/dist/reporters/htmlReporter.js.map +1 -1
- package/dist/reporters/htmlReviewReporter.d.ts +2 -0
- package/dist/reporters/htmlReviewReporter.js +94 -0
- package/dist/reporters/htmlReviewReporter.js.map +1 -0
- package/dist/reporters/htmlShared.d.ts +7 -0
- package/dist/reporters/htmlShared.js +106 -0
- package/dist/reporters/htmlShared.js.map +1 -0
- package/dist/tool-manifest.json +2 -2
- package/dist/types/preflight.d.ts +19 -0
- package/dist/types/start.d.ts +7 -437
- package/dist/types/startCommon.d.ts +79 -0
- package/dist/types/startCommon.js +2 -0
- package/dist/types/startCommon.js.map +1 -0
- package/dist/types/startExecution.d.ts +44 -0
- package/dist/types/startExecution.js +2 -0
- package/dist/types/startExecution.js.map +1 -0
- package/dist/types/startMissionControl.d.ts +91 -0
- package/dist/types/startMissionControl.js +2 -0
- package/dist/types/startMissionControl.js.map +1 -0
- package/dist/types/startMissionProof.d.ts +91 -0
- package/dist/types/startMissionProof.js +2 -0
- package/dist/types/startMissionProof.js.map +1 -0
- package/dist/types/startMissionResume.d.ts +100 -0
- package/dist/types/startMissionResume.js +2 -0
- package/dist/types/startMissionResume.js.map +1 -0
- package/dist/types/startMissionReview.d.ts +45 -0
- package/dist/types/startMissionReview.js +2 -0
- package/dist/types/startMissionReview.js.map +1 -0
- package/dist/types/startMissionTooling.d.ts +16 -0
- package/dist/types/startMissionTooling.js +2 -0
- package/dist/types/startMissionTooling.js.map +1 -0
- package/dist/utils/changedFiles.d.ts +1 -0
- package/dist/utils/changedFiles.js +7 -4
- package/dist/utils/changedFiles.js.map +1 -1
- package/docs/GUIDE.md +9 -7
- package/docs/ROADMAP.md +18 -7
- package/docs/examples/adoption-workflows.md +12 -1
- package/docs/examples/swarm-coordination.md +11 -2
- package/package.json +1 -1
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export type StartExecutionPhaseId = 'next_action' | 'ready_now' | 'resolve_inputs' | 'follow_up' | 'proof' | 'done_when';
|
|
2
|
+
export type StartExecutionStatus = 'ready' | 'blocked' | 'pending';
|
|
3
|
+
export type StartExecutionStepKind = 'tool' | 'input' | 'proof' | 'criterion' | 'handoff';
|
|
4
|
+
export interface StartExecutionStep {
|
|
5
|
+
id: string;
|
|
6
|
+
kind: StartExecutionStepKind;
|
|
7
|
+
status: StartExecutionStatus;
|
|
8
|
+
label: string;
|
|
9
|
+
command?: string;
|
|
10
|
+
tool?: string;
|
|
11
|
+
args?: Record<string, unknown>;
|
|
12
|
+
instruction?: string;
|
|
13
|
+
placeholder?: string;
|
|
14
|
+
dependsOn?: string[];
|
|
15
|
+
blockedBy?: string[];
|
|
16
|
+
unlocks?: string[];
|
|
17
|
+
}
|
|
18
|
+
export interface StartExecutionPhase {
|
|
19
|
+
id: StartExecutionPhaseId;
|
|
20
|
+
title: string;
|
|
21
|
+
status: StartExecutionStatus;
|
|
22
|
+
steps: StartExecutionStep[];
|
|
23
|
+
}
|
|
24
|
+
export interface StartExecutionCursor {
|
|
25
|
+
phaseId: StartExecutionPhaseId;
|
|
26
|
+
stepId: string;
|
|
27
|
+
status: StartExecutionStatus;
|
|
28
|
+
kind: StartExecutionStepKind;
|
|
29
|
+
label: string;
|
|
30
|
+
command?: string;
|
|
31
|
+
tool?: string;
|
|
32
|
+
args?: Record<string, unknown>;
|
|
33
|
+
instruction?: string;
|
|
34
|
+
placeholder?: string;
|
|
35
|
+
blockedBy?: string[];
|
|
36
|
+
unlocks?: string[];
|
|
37
|
+
reason: string;
|
|
38
|
+
}
|
|
39
|
+
export interface StartExecutionPlan {
|
|
40
|
+
summary: string;
|
|
41
|
+
currentPhase: StartExecutionPhaseId;
|
|
42
|
+
cursor: StartExecutionCursor;
|
|
43
|
+
phases: StartExecutionPhase[];
|
|
44
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"startExecution.js","sourceRoot":"","sources":["../../src/types/startExecution.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import type { PreflightSuggestedAction, PreflightVerdict } from './preflight.js';
|
|
2
|
+
import type { QualityScorecardVerdict } from './qualityScorecard.js';
|
|
3
|
+
import type { SessionCoordinationHint } from './session.js';
|
|
4
|
+
import type { StartAdoptionGap, StartAdoptionLoop, StartFirstTenMinutes, StartModeSource, StartMissionControlStatus, StartRisk, StartRoadmapPreview, StartRoutedIntent, StartUnresolvedInput, StartWorkflowRecommendation } from './startCommon.js';
|
|
5
|
+
import type { StartExecutionPlan } from './startExecution.js';
|
|
6
|
+
import type { MissionOutcome } from './startMissionProof.js';
|
|
7
|
+
import type { StartMissionHandoff, StartMissionResume, StartMissionRunbook, StartMissionTaskCard } from './startMissionResume.js';
|
|
8
|
+
import type { StartMissionReviewGate } from './startMissionReview.js';
|
|
9
|
+
import type { FixFirstRecommendation, WorkplanMode } from './workplan.js';
|
|
10
|
+
import type { WorkplanHandoffPayload } from './workplanHandoff.js';
|
|
11
|
+
export interface StartMissionControl {
|
|
12
|
+
intent?: string;
|
|
13
|
+
status: StartMissionControlStatus;
|
|
14
|
+
headline: string;
|
|
15
|
+
whyNow: string;
|
|
16
|
+
primaryAction: PreflightSuggestedAction;
|
|
17
|
+
actionPlan: PreflightSuggestedAction[];
|
|
18
|
+
readyActions: PreflightSuggestedAction[];
|
|
19
|
+
routedIntent?: StartRoutedIntent;
|
|
20
|
+
alternatives?: StartRoutedIntent[];
|
|
21
|
+
unresolvedInputs: StartUnresolvedInput[];
|
|
22
|
+
guardrails: PreflightSuggestedAction[];
|
|
23
|
+
successCriteria: string[];
|
|
24
|
+
proofSummary: string;
|
|
25
|
+
proofCommands: string[];
|
|
26
|
+
resume: StartMissionResume;
|
|
27
|
+
handoff: StartMissionHandoff;
|
|
28
|
+
executionPlan: StartExecutionPlan;
|
|
29
|
+
runbook: StartMissionRunbook;
|
|
30
|
+
reviewGate: StartMissionReviewGate;
|
|
31
|
+
taskCard: StartMissionTaskCard;
|
|
32
|
+
outcome?: MissionOutcome;
|
|
33
|
+
handoffPrompt: string;
|
|
34
|
+
}
|
|
35
|
+
export interface StartReport {
|
|
36
|
+
schemaVersion: 1;
|
|
37
|
+
readOnly: true;
|
|
38
|
+
rootPath: string;
|
|
39
|
+
mode: WorkplanMode;
|
|
40
|
+
modeSource: StartModeSource;
|
|
41
|
+
modeReason: string;
|
|
42
|
+
summary: string;
|
|
43
|
+
setup: {
|
|
44
|
+
overall: 'pass' | 'warn' | 'fail' | 'info';
|
|
45
|
+
diagnostics: Array<{
|
|
46
|
+
id: string;
|
|
47
|
+
label: string;
|
|
48
|
+
status: 'pass' | 'warn' | 'fail' | 'info';
|
|
49
|
+
summary: string;
|
|
50
|
+
detail?: string;
|
|
51
|
+
command?: string;
|
|
52
|
+
}>;
|
|
53
|
+
};
|
|
54
|
+
recommendedWorkflow: StartWorkflowRecommendation;
|
|
55
|
+
firstTenMinutes: StartFirstTenMinutes;
|
|
56
|
+
missionControl: StartMissionControl;
|
|
57
|
+
coordinationHints: SessionCoordinationHint[];
|
|
58
|
+
evidence: {
|
|
59
|
+
workplanVerdict: PreflightVerdict;
|
|
60
|
+
workplanSummary: string;
|
|
61
|
+
qualityVerdict: QualityScorecardVerdict;
|
|
62
|
+
qualitySummary: string;
|
|
63
|
+
healthScore: number;
|
|
64
|
+
mcpReady: boolean;
|
|
65
|
+
riskSources: {
|
|
66
|
+
currentWorktree: {
|
|
67
|
+
kind: 'current-worktree';
|
|
68
|
+
available: boolean;
|
|
69
|
+
count: number;
|
|
70
|
+
files: string[];
|
|
71
|
+
baseRef: string | null;
|
|
72
|
+
reason?: string;
|
|
73
|
+
};
|
|
74
|
+
sessionMemory: {
|
|
75
|
+
kind: 'remembered-session';
|
|
76
|
+
touchedFiles: string[];
|
|
77
|
+
totalTouchedFiles: number;
|
|
78
|
+
note: string;
|
|
79
|
+
truncated?: boolean;
|
|
80
|
+
};
|
|
81
|
+
};
|
|
82
|
+
roadmapPreview?: StartRoadmapPreview;
|
|
83
|
+
};
|
|
84
|
+
topRisks: StartRisk[];
|
|
85
|
+
fixFirst?: FixFirstRecommendation;
|
|
86
|
+
adoptionGaps: StartAdoptionGap[];
|
|
87
|
+
adoptionLoop?: StartAdoptionLoop;
|
|
88
|
+
nextActions: PreflightSuggestedAction[];
|
|
89
|
+
handoff?: WorkplanHandoffPayload;
|
|
90
|
+
truncated?: boolean;
|
|
91
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"startMissionControl.js","sourceRoot":"","sources":["../../src/types/startMissionControl.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import type { PreflightSuggestedAction } from './preflight.js';
|
|
2
|
+
export type MissionRunStatus = 'not_run' | 'running' | 'passed' | 'failed' | 'unknown';
|
|
3
|
+
export interface MissionProofStatusRow {
|
|
4
|
+
id: string;
|
|
5
|
+
label?: string;
|
|
6
|
+
log?: string;
|
|
7
|
+
command?: string;
|
|
8
|
+
exitCode?: number;
|
|
9
|
+
}
|
|
10
|
+
export interface MissionReviewDecisionRecord {
|
|
11
|
+
decision: 'approve_next_slice' | 'request_changes' | 'review_version_candidate' | string;
|
|
12
|
+
reviewer?: string;
|
|
13
|
+
at?: string;
|
|
14
|
+
note?: string;
|
|
15
|
+
}
|
|
16
|
+
export interface MissionOutcome {
|
|
17
|
+
schemaVersion: 1;
|
|
18
|
+
available: boolean;
|
|
19
|
+
missionDir: string;
|
|
20
|
+
status: MissionRunStatus;
|
|
21
|
+
reason?: string;
|
|
22
|
+
nextAction?: string;
|
|
23
|
+
proof: {
|
|
24
|
+
completedCommands: number;
|
|
25
|
+
failedCommands: number;
|
|
26
|
+
reruns: number;
|
|
27
|
+
totalCommands?: number;
|
|
28
|
+
failedStep?: string;
|
|
29
|
+
failedLog?: string;
|
|
30
|
+
exitCode?: number;
|
|
31
|
+
rows: MissionProofStatusRow[];
|
|
32
|
+
};
|
|
33
|
+
review: {
|
|
34
|
+
decisions: MissionReviewDecisionRecord[];
|
|
35
|
+
approvals: number;
|
|
36
|
+
changeRequests: number;
|
|
37
|
+
versionCandidateReviews: number;
|
|
38
|
+
};
|
|
39
|
+
whatChanged: string[];
|
|
40
|
+
whatRemains: string[];
|
|
41
|
+
versionCandidate: {
|
|
42
|
+
recommendation: 'run_proof' | 'wait' | 'review_candidate' | 'do_not_cut';
|
|
43
|
+
summary: string;
|
|
44
|
+
};
|
|
45
|
+
resumePrompt: string;
|
|
46
|
+
}
|
|
47
|
+
export interface MissionProofBaselineRun {
|
|
48
|
+
id: string;
|
|
49
|
+
status: MissionRunStatus;
|
|
50
|
+
failedGates?: number;
|
|
51
|
+
reruns?: number;
|
|
52
|
+
minutesSpent?: number;
|
|
53
|
+
reviewerApprovals?: number;
|
|
54
|
+
}
|
|
55
|
+
export interface MissionProofTotals {
|
|
56
|
+
missions: number;
|
|
57
|
+
passed: number;
|
|
58
|
+
failed: number;
|
|
59
|
+
running: number;
|
|
60
|
+
notRun: number;
|
|
61
|
+
unavailable: number;
|
|
62
|
+
proofCompletionRate: number;
|
|
63
|
+
reruns: number;
|
|
64
|
+
failedGates: number;
|
|
65
|
+
reviewerApprovals: number;
|
|
66
|
+
}
|
|
67
|
+
export interface MissionProofReport {
|
|
68
|
+
schemaVersion: 1;
|
|
69
|
+
readOnly: true;
|
|
70
|
+
rootPath: string;
|
|
71
|
+
summary: string;
|
|
72
|
+
missionControl: {
|
|
73
|
+
missions: MissionOutcome[];
|
|
74
|
+
totals: MissionProofTotals;
|
|
75
|
+
};
|
|
76
|
+
baseline?: {
|
|
77
|
+
path: string;
|
|
78
|
+
runs: MissionProofBaselineRun[];
|
|
79
|
+
totals: MissionProofTotals & {
|
|
80
|
+
minutesSpent: number;
|
|
81
|
+
};
|
|
82
|
+
};
|
|
83
|
+
comparison?: {
|
|
84
|
+
completionRateDelta: number;
|
|
85
|
+
rerunsAvoided: number;
|
|
86
|
+
failedGatesAvoided: number;
|
|
87
|
+
minutesSaved: number;
|
|
88
|
+
};
|
|
89
|
+
riskAvoided: string[];
|
|
90
|
+
nextActions: PreflightSuggestedAction[];
|
|
91
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"startMissionProof.js","sourceRoot":"","sources":["../../src/types/startMissionProof.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import type { PreflightSuggestedAction } from './preflight.js';
|
|
2
|
+
import type { StartMissionControlStatus, StartUnresolvedInput } from './startCommon.js';
|
|
3
|
+
import type { StartExecutionCursor, StartExecutionPhaseId, StartExecutionStatus, StartExecutionStepKind } from './startExecution.js';
|
|
4
|
+
import type { StartMissionReviewGate } from './startMissionReview.js';
|
|
5
|
+
import type { StartMissionProofItem, StartMissionProofToolCall, StartMissionToolCall } from './startMissionTooling.js';
|
|
6
|
+
export interface StartMissionResumeReference {
|
|
7
|
+
id: string;
|
|
8
|
+
phaseId: StartExecutionPhaseId;
|
|
9
|
+
kind: StartExecutionStepKind;
|
|
10
|
+
status: StartExecutionStatus;
|
|
11
|
+
label: string;
|
|
12
|
+
instruction?: string;
|
|
13
|
+
command?: string;
|
|
14
|
+
placeholder?: string;
|
|
15
|
+
}
|
|
16
|
+
export interface StartMissionInputBinding {
|
|
17
|
+
inputId: string;
|
|
18
|
+
label: string;
|
|
19
|
+
placeholder: string;
|
|
20
|
+
instruction: string;
|
|
21
|
+
followUpIds: string[];
|
|
22
|
+
}
|
|
23
|
+
export type StartMissionResumeChecklistItemKind = 'run_current' | 'resolve_input' | 'run_follow_up' | 'run_proof' | 'confirm_done';
|
|
24
|
+
export interface StartMissionResumeChecklistItem {
|
|
25
|
+
id: string;
|
|
26
|
+
kind: StartMissionResumeChecklistItemKind;
|
|
27
|
+
phaseId: StartExecutionPhaseId;
|
|
28
|
+
stepId: string;
|
|
29
|
+
status: StartExecutionStatus;
|
|
30
|
+
label: string;
|
|
31
|
+
command?: string;
|
|
32
|
+
tool?: string;
|
|
33
|
+
args?: Record<string, unknown>;
|
|
34
|
+
placeholder?: string;
|
|
35
|
+
instruction?: string;
|
|
36
|
+
blockedBy?: string[];
|
|
37
|
+
dependsOn?: string[];
|
|
38
|
+
unlocks?: string[];
|
|
39
|
+
followUpIds?: string[];
|
|
40
|
+
}
|
|
41
|
+
export interface StartMissionResumeFollowUp {
|
|
42
|
+
id: string;
|
|
43
|
+
phaseId: StartExecutionPhaseId;
|
|
44
|
+
kind: StartExecutionStepKind;
|
|
45
|
+
status: StartExecutionStatus;
|
|
46
|
+
label: string;
|
|
47
|
+
command?: string;
|
|
48
|
+
tool?: string;
|
|
49
|
+
args?: Record<string, unknown>;
|
|
50
|
+
blockedBy?: string[];
|
|
51
|
+
dependsOn?: string[];
|
|
52
|
+
}
|
|
53
|
+
export interface StartMissionResume {
|
|
54
|
+
currentStep: StartExecutionCursor;
|
|
55
|
+
status: StartExecutionStatus;
|
|
56
|
+
instruction: string;
|
|
57
|
+
prompt: string;
|
|
58
|
+
commandBlock?: string;
|
|
59
|
+
toolCall?: StartMissionToolCall;
|
|
60
|
+
followUps?: StartMissionResumeFollowUp[];
|
|
61
|
+
inputBindings?: StartMissionInputBinding[];
|
|
62
|
+
checklist?: StartMissionResumeChecklistItem[];
|
|
63
|
+
remainingProofItems?: StartMissionProofItem[];
|
|
64
|
+
remainingProofCommands?: string[];
|
|
65
|
+
remainingProofToolCalls?: StartMissionProofToolCall[];
|
|
66
|
+
unlocks?: StartMissionResumeReference[];
|
|
67
|
+
blockedBy?: StartMissionResumeReference[];
|
|
68
|
+
}
|
|
69
|
+
export interface StartMissionHandoff {
|
|
70
|
+
currentStep: StartExecutionCursor;
|
|
71
|
+
resume: StartMissionResume;
|
|
72
|
+
reviewGate: StartMissionReviewGate;
|
|
73
|
+
nextAction: PreflightSuggestedAction;
|
|
74
|
+
readyActions: PreflightSuggestedAction[];
|
|
75
|
+
needsInput: StartUnresolvedInput[];
|
|
76
|
+
doneWhen: string[];
|
|
77
|
+
readyProof: {
|
|
78
|
+
summary: string;
|
|
79
|
+
commands: string[];
|
|
80
|
+
toolCalls?: StartMissionProofToolCall[];
|
|
81
|
+
items?: StartMissionProofItem[];
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
export interface StartMissionRunbook {
|
|
85
|
+
title: string;
|
|
86
|
+
status: StartMissionControlStatus;
|
|
87
|
+
currentPhase: StartExecutionPhaseId;
|
|
88
|
+
currentStep: StartExecutionCursor;
|
|
89
|
+
resume: StartMissionResume;
|
|
90
|
+
readyCommandBlock: string;
|
|
91
|
+
blockedInputSummary?: string;
|
|
92
|
+
markdown: string;
|
|
93
|
+
}
|
|
94
|
+
export interface StartMissionTaskCard {
|
|
95
|
+
title: string;
|
|
96
|
+
status: StartMissionControlStatus;
|
|
97
|
+
currentPhase: StartExecutionPhaseId;
|
|
98
|
+
currentStep: StartExecutionCursor;
|
|
99
|
+
markdown: string;
|
|
100
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"startMissionResume.js","sourceRoot":"","sources":["../../src/types/startMissionResume.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { StartMissionControlStatus } from './startCommon.js';
|
|
2
|
+
import type { StartMissionProofItem, StartMissionProofToolCall } from './startMissionTooling.js';
|
|
3
|
+
export interface StartMissionReviewWorktree {
|
|
4
|
+
available: boolean;
|
|
5
|
+
clean: boolean;
|
|
6
|
+
changedFileCount: number;
|
|
7
|
+
files: string[];
|
|
8
|
+
baseRef: string | null;
|
|
9
|
+
summary: string;
|
|
10
|
+
reason?: string;
|
|
11
|
+
}
|
|
12
|
+
export interface StartMissionReviewProof {
|
|
13
|
+
summary: string;
|
|
14
|
+
commands: string[];
|
|
15
|
+
toolCalls?: StartMissionProofToolCall[];
|
|
16
|
+
items?: StartMissionProofItem[];
|
|
17
|
+
}
|
|
18
|
+
export type StartMissionReviewBlockedAction = 'next_slice' | 'release' | 'publish' | 'deploy' | 'push' | 'merge' | 'version_bump';
|
|
19
|
+
export interface StartMissionReviewPolicy {
|
|
20
|
+
approvalRequired: true;
|
|
21
|
+
blockedActions: StartMissionReviewBlockedAction[];
|
|
22
|
+
summary: string;
|
|
23
|
+
}
|
|
24
|
+
export interface StartMissionReviewDecision {
|
|
25
|
+
id: 'approve_next_slice' | 'request_changes' | 'review_version_candidate';
|
|
26
|
+
label: string;
|
|
27
|
+
description: string;
|
|
28
|
+
consequence: string;
|
|
29
|
+
reply: string;
|
|
30
|
+
}
|
|
31
|
+
export interface StartMissionReviewGate {
|
|
32
|
+
title: string;
|
|
33
|
+
required: true;
|
|
34
|
+
status: StartMissionControlStatus;
|
|
35
|
+
stopCondition: string;
|
|
36
|
+
reviewPrompt: string;
|
|
37
|
+
checklist: string[];
|
|
38
|
+
doneWhen: string[];
|
|
39
|
+
policy: StartMissionReviewPolicy;
|
|
40
|
+
decisions: StartMissionReviewDecision[];
|
|
41
|
+
commands: string[];
|
|
42
|
+
worktree: StartMissionReviewWorktree;
|
|
43
|
+
proof: StartMissionReviewProof;
|
|
44
|
+
markdown: string;
|
|
45
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"startMissionReview.js","sourceRoot":"","sources":["../../src/types/startMissionReview.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { StartExecutionStatus } from './startExecution.js';
|
|
2
|
+
export interface StartMissionToolCall {
|
|
3
|
+
tool: string;
|
|
4
|
+
args?: Record<string, unknown>;
|
|
5
|
+
}
|
|
6
|
+
export interface StartMissionProofToolCall extends StartMissionToolCall {
|
|
7
|
+
stepId: string;
|
|
8
|
+
command: string;
|
|
9
|
+
}
|
|
10
|
+
export interface StartMissionProofItem {
|
|
11
|
+
stepId: string;
|
|
12
|
+
status: StartExecutionStatus;
|
|
13
|
+
label: string;
|
|
14
|
+
command: string;
|
|
15
|
+
toolCall?: StartMissionToolCall;
|
|
16
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"startMissionTooling.js","sourceRoot":"","sources":["../../src/types/startMissionTooling.ts"],"names":[],"mappings":""}
|
|
@@ -18,6 +18,7 @@ export async function getChangedFiles(rootPath, explicitBaseRef) {
|
|
|
18
18
|
reason: 'not a git repository',
|
|
19
19
|
baseRef: null,
|
|
20
20
|
files: [],
|
|
21
|
+
uncommittedFiles: [],
|
|
21
22
|
};
|
|
22
23
|
}
|
|
23
24
|
const candidates = explicitBaseRef ? [explicitBaseRef] : [...DEFAULT_BASE_REFS, 'HEAD~1'];
|
|
@@ -29,8 +30,8 @@ export async function getChangedFiles(rootPath, explicitBaseRef) {
|
|
|
29
30
|
continue;
|
|
30
31
|
}
|
|
31
32
|
try {
|
|
32
|
-
const files = await diffNames(rootPath, ref);
|
|
33
|
-
return { available: true, baseRef: ref, files };
|
|
33
|
+
const { files, uncommittedFiles } = await diffNames(rootPath, ref);
|
|
34
|
+
return { available: true, baseRef: ref, files, uncommittedFiles };
|
|
34
35
|
}
|
|
35
36
|
catch (err) {
|
|
36
37
|
// 1.10+ — surface stdio-too-large explicitly instead of letting it
|
|
@@ -46,6 +47,7 @@ export async function getChangedFiles(rootPath, explicitBaseRef) {
|
|
|
46
47
|
'(typically > 100K files changed). Use --base-ref to pin a closer ref.',
|
|
47
48
|
baseRef: null,
|
|
48
49
|
files: [],
|
|
50
|
+
uncommittedFiles: [],
|
|
49
51
|
};
|
|
50
52
|
}
|
|
51
53
|
lastError = err instanceof Error ? err.message : String(err);
|
|
@@ -55,7 +57,7 @@ export async function getChangedFiles(rootPath, explicitBaseRef) {
|
|
|
55
57
|
try {
|
|
56
58
|
const files = await statusNames(rootPath);
|
|
57
59
|
if (files.length > 0) {
|
|
58
|
-
return { available: true, baseRef: '(working tree)', files };
|
|
60
|
+
return { available: true, baseRef: '(working tree)', files, uncommittedFiles: files };
|
|
59
61
|
}
|
|
60
62
|
}
|
|
61
63
|
catch (err) {
|
|
@@ -66,6 +68,7 @@ export async function getChangedFiles(rootPath, explicitBaseRef) {
|
|
|
66
68
|
reason: lastError ?? 'no usable base ref found',
|
|
67
69
|
baseRef: null,
|
|
68
70
|
files: [],
|
|
71
|
+
uncommittedFiles: [],
|
|
69
72
|
};
|
|
70
73
|
}
|
|
71
74
|
async function isGitRepo(rootPath) {
|
|
@@ -104,7 +107,7 @@ async function diffNames(rootPath, baseRef) {
|
|
|
104
107
|
}
|
|
105
108
|
for (const f of uncommitted)
|
|
106
109
|
set.add(f);
|
|
107
|
-
return [...set].sort();
|
|
110
|
+
return { files: [...set].sort(), uncommittedFiles: uncommitted };
|
|
108
111
|
}
|
|
109
112
|
async function statusNames(rootPath) {
|
|
110
113
|
const { stdout } = await execFileAsync('git', ['status', '--porcelain', '--untracked-files=all'], { cwd: rootPath, maxBuffer: 10 * 1024 * 1024 });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"changedFiles.js","sourceRoot":"","sources":["../../src/utils/changedFiles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAE1C,MAAM,iBAAiB,GAAG,CAAC,aAAa,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"changedFiles.js","sourceRoot":"","sources":["../../src/utils/changedFiles.ts"],"names":[],"mappings":"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"}
|
package/docs/GUIDE.md
CHANGED
|
@@ -167,6 +167,7 @@ When the agent first opens a repo, or before starting a refactor, the question i
|
|
|
167
167
|
For risky-file, complexity, refactor-priority, and codebase-performance questions, such as `projscan start --intent "what files are risky to touch?"`, `projscan start --intent "which files are too complex?"`, `projscan start --intent "what file should I refactor first?"`, `projscan start --intent "find performance bottlenecks"`, or `projscan start --intent "where are the slow files?"`, it routes to `projscan_hotspots` so the developer sees the highest-risk files before editing. For exact-file risk questions, such as `projscan start --intent "why is src/core/start.ts risky?"`, it routes to `projscan_file` so the file's hotspot, ownership, issue, import, and export context explains the risk. For cleanup questions, such as `projscan start --intent "find dead code"`, `projscan start --intent "find dead code and unused exports I can delete"`, `projscan start --intent "what can I safely delete?"`, or `projscan start --intent "what can I remove safely?"`, it routes to `projscan_doctor` so dead code, unused exports, and adjacent health issues are reviewed before files are removed.
|
|
168
168
|
For tech-debt and simplification questions, such as `projscan start --intent "what tech debt should I pay down?"` or `projscan start --intent "what code should I simplify?"`, it routes to `projscan_hotspots` instead of incident handling for the word `down`.
|
|
169
169
|
For reviewer-proof requests, such as `projscan start --intent "write a PR comment for reviewers"`, `projscan start --intent "write a PR description"`, `projscan start --intent "what should my PR say?"`, `projscan start --intent "make a PR checklist"`, `projscan start --intent "summarize my changes for reviewers"`, or `projscan start --intent "what should I tell my team about this change?"`, it routes to `projscan_evidence_pack` with `pr_comment: true` so the developer gets a paste-ready verdict, top risks, owner routing, and next commands.
|
|
170
|
+
For shareable scoped-evidence requests, such as `projscan start --intent "share redacted evidence for src/api with a partner"`, it routes to `projscan_analyze` and returns ready analyze, doctor, and CI commands with `--report-scope` and `--redact-paths` so security reviewers and partners can receive path-safe artifacts without a full repo map.
|
|
170
171
|
For reviewer-routing questions, such as `projscan start --intent "who should review this PR?"`, it routes to `projscan_evidence_pack` so likely owners and reviewer-facing context are prepared before a full review.
|
|
171
172
|
For PR-readiness questions, such as `projscan start --intent "am I ready to open a PR?"`, it routes to `projscan_evidence_pack` so preflight, owner routing, top risks, and reviewer-facing proof are prepared before review starts.
|
|
172
173
|
For changed-file owner questions, such as `projscan start --intent "who owns the changed files?"`, it routes to `projscan_evidence_pack` so changed-file owner routing is prepared without confusing it with single-file ownership inspection.
|
|
@@ -180,7 +181,7 @@ When the agent first opens a repo, or before starting a refactor, the question i
|
|
|
180
181
|
For short proof-command phrasing, such as `projscan start --intent "give me proof commands"`, it also routes to `projscan_regression_plan --level focused`; reviewer-proof wording with PR comments still routes to `projscan_evidence_pack`.
|
|
181
182
|
For pre-push command questions, such as `projscan start --intent "what commands should I run before pushing?"`, it routes to `projscan_regression_plan --level focused` so the branch has a small verification loop before it leaves the workstation.
|
|
182
183
|
For release-readiness wording, such as `projscan start --intent "what should I check before release?"`, `projscan start --intent "can I deploy this?"`, `projscan start --intent "prepare this branch for deployment"`, `projscan start --intent "what changed since last release?"`, `projscan start --intent "write a release note for this change"`, or `projscan start --intent "draft changelog entry"`, it routes to `projscan_release_train` so changelog, package, SBOM, provenance, and blockers are reviewed before deploying or publishing.
|
|
183
|
-
For
|
|
184
|
+
For generic build-next questions, such as `projscan start --intent "what should we build next?"`, it routes to `projscan_workplan --mode before_edit` so the next implementation slice starts with an ordered plan and verification instead of release readiness. For explicit product-roadmap questions, such as `projscan start --intent "plan the product roadmap"`, it routes to `projscan_release_train` / `projscan release-train` so broad product direction becomes read-only roadmap planning with current post-4.4 workstreams and `evidence.roadmapPreview`.
|
|
184
185
|
For broad improvement-planning questions, such as `projscan start --intent "what should we improve next?"`, it routes to `projscan_bug_hunt` so the agent gets an actionable ranked queue; technical variants such as tests, performance, release, dependencies, or safety keep their specialized routes.
|
|
185
186
|
For quick-win and low-risk improvement wording, such as `projscan start --intent "find a quick win"`, `projscan start --intent "what is a low risk improvement?"`, or `projscan start --intent "pick a small safe task"`, it routes to `projscan_bug_hunt` so a ranked, verifiable action queue is selected instead of a generic quality readout.
|
|
186
187
|
For tiny-task and beginner-safe wording, such as `projscan start --intent "what can I do in five minutes?"`, `projscan start --intent "pick an easy task for me"`, or `projscan start --intent "what should an intern work on?"`, it also routes to `projscan_bug_hunt`.
|
|
@@ -204,7 +205,7 @@ When the agent first opens a repo, or before starting a refactor, the question i
|
|
|
204
205
|
- **`projscan_preflight` / `projscan preflight`** — agent safety gate. Returns `proceed`, `caution`, or `block` with health, changed-file, review, remembered session, hotspot, plugin-policy, supply-chain, and release-scale evidence. `evidence.riskSources.currentWorktree` is current Git/worktree evidence; `evidence.riskSources.sessionMemory` is remembered handoff context. Use `--mode before_edit` at the start of work and `--mode before_commit` / `--mode before_merge` before handing off or merging; scale-only commit blocks are cautions, while merge gates still require manual release sign-off.
|
|
205
206
|
- **`projscan_hotspots` / `projscan hotspots`** — files ranked by `git churn × AST cyclomatic complexity × open issues × ownership × coverage`. Pass `view: "functions"` for top-N risky individual functions across the repo (0.13+).
|
|
206
207
|
- **`projscan_semantic_graph` / `projscan semantic-graph`** — stable v3 graph contract with file, function, package, and symbol nodes plus imports, exports, definitions, and calls edges. Use it when an agent needs one normalized graph shape instead of several targeted queries.
|
|
207
|
-
- **`projscan_dataflow` / `projscan dataflow`** — direct, propagated, and bridge source-to-sink dataflow risks, including framework-aware Next.js
|
|
208
|
+
- **`projscan_dataflow` / `projscan dataflow`** — direct, propagated, and bridge source-to-sink dataflow risks, including framework-aware Next.js, Remix, SvelteKit, Hono, Express, Fastify, and Koa request sources. Use it for a focused safety pass before touching command execution, raw SQL, filesystem writes, or DOM sinks.
|
|
208
209
|
- **`projscan_coupling` / `projscan coupling`** — per-file fan-in / fan-out / instability plus circular-import cycles (Tarjan SCC). Use `direction: cycles_only` or `projscan coupling --cycles-only` to surface architectural debt directly.
|
|
209
210
|
- **`projscan_analyze` / `projscan analyze`** — the everything report; useful at session start but verbose.
|
|
210
211
|
|
|
@@ -434,8 +435,9 @@ graph. Bridge risks are graph-backed dataflow additions: a wrapper that calls a
|
|
|
434
435
|
and a sink wrapper is surfaced even when legacy taint reachability cannot see a
|
|
435
436
|
downstream call path from source to sink. By default, dataflow suppresses test-file paths,
|
|
436
437
|
broad readFile/writeFile-style noise, and JavaScript RegExp.exec false positives.
|
|
437
|
-
Framework request-source detection covers narrow tested patterns for Next.js,
|
|
438
|
-
Express, Fastify, and Koa handlers, including
|
|
438
|
+
Framework request-source detection covers narrow tested patterns for Next.js, Remix,
|
|
439
|
+
SvelteKit, Hono, Express, Fastify, and Koa handlers, including SvelteKit
|
|
440
|
+
`RequestEvent` request/body/url/params/cookies evidence, Hono validator output,
|
|
439
441
|
Express/Fastify/Koa request IP metadata, Fastify host/hostname and raw
|
|
440
442
|
URL/header evidence, and Express/Koa header accessors plus Express
|
|
441
443
|
`req.param(...)` and `req.originalUrl`, while
|
|
@@ -702,8 +704,8 @@ Preview the impact of upgrading a package. The default path is fully offline; pa
|
|
|
702
704
|
- Breaking-change markers found in the CHANGELOG: scans for `BREAKING CHANGE`, `deprecated`, `removed support`, `no longer supported`, and section headers containing "breaking"
|
|
703
705
|
- CHANGELOG excerpt sliced to the relevant version range (read from `node_modules/<pkg>/CHANGELOG.md`)
|
|
704
706
|
- Importer list - every file in your source tree that imports the package (direct or sub-path)
|
|
705
|
-
- Python manifest evidence for packages declared in `pyproject.toml` (including PEP 735 `dependency-groups`, Poetry dependency groups, and legacy `tool.poetry.dev-dependencies`), `setup.cfg`, `setup.py`,
|
|
706
|
-
- Python current-version evidence from `poetry.lock` / `uv.lock` / `pdm.lock` package blocks, `conda-lock.yml` / `conda-lock.yaml` package entries, `Pipfile.lock` exact versions, pinned root `requirements
|
|
707
|
+
- Python manifest evidence for packages declared in `pyproject.toml` (including PEP 735 `dependency-groups`, Poetry dependency groups, and legacy `tool.poetry.dev-dependencies`), `setup.cfg`, `setup.py`, root `requirements*.txt`, or common `requirements/*.txt` / `requirements/*.in` manifests such as `requirements/base.txt` and `requirements/dev.in`. Python manifests are sufficient local evidence even before `.py` files exist.
|
|
708
|
+
- Python current-version evidence from `poetry.lock` / `uv.lock` / `pdm.lock` package blocks, `conda-lock.yml` / `conda-lock.yaml` package entries, `Pipfile.lock` exact versions, pinned root or recognized nested `requirements/*.txt`, or pinned root or recognized nested `constraints/*.txt` entries
|
|
707
709
|
|
|
708
710
|
**Example:**
|
|
709
711
|
|
|
@@ -725,7 +727,7 @@ $ projscan upgrade react --format markdown
|
|
|
725
727
|
|
|
726
728
|
- Reads the CHANGELOG that npm already placed in `node_modules/`. If the package author doesn't ship one, you'll see "No local CHANGELOG found."
|
|
727
729
|
- Without `--check-registry`, works with what's **installed** and reports `latestSource: "installed"`. With `--check-registry`, npm registry lookup is attempted and failures fall back to the installed version with `registryError`.
|
|
728
|
-
- Python previews stay offline. They do not query PyPI; current-version evidence comes from supported local lockfiles, pinned root requirements, or pinned root constraints.
|
|
730
|
+
- Python previews stay offline. They do not query PyPI; current-version evidence comes from supported local lockfiles, pinned root or recognized nested requirements, or pinned root or recognized nested constraints.
|
|
729
731
|
|
|
730
732
|
### coverage
|
|
731
733
|
|