projscan 3.0.3 → 3.0.5
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 +54 -27
- package/dist/cli/commands/dogfood.d.ts +1 -0
- package/dist/cli/commands/dogfood.js +62 -0
- package/dist/cli/commands/dogfood.js.map +1 -0
- package/dist/cli/commands/evidencePack.js +6 -0
- package/dist/cli/commands/evidencePack.js.map +1 -1
- package/dist/cli/commands/init.js +143 -1
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/mcp.js +67 -3
- package/dist/cli/commands/mcp.js.map +1 -1
- package/dist/cli/commands/start.d.ts +1 -0
- package/dist/cli/commands/start.js +86 -0
- package/dist/cli/commands/start.js.map +1 -0
- package/dist/cli/commands/workplan.js +17 -11
- package/dist/cli/commands/workplan.js.map +1 -1
- package/dist/cli/index.js +4 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/core/adoption.d.ts +86 -0
- package/dist/core/adoption.js +463 -0
- package/dist/core/adoption.js.map +1 -1
- package/dist/core/ast.d.ts +6 -0
- package/dist/core/ast.js +59 -11
- package/dist/core/ast.js.map +1 -1
- package/dist/core/bugHunt.js +19 -7
- package/dist/core/bugHunt.js.map +1 -1
- package/dist/core/dataflow.js +98 -9
- package/dist/core/dataflow.js.map +1 -1
- package/dist/core/dogfood.d.ts +6 -0
- package/dist/core/dogfood.js +116 -0
- package/dist/core/dogfood.js.map +1 -0
- package/dist/core/fixFirst.d.ts +8 -0
- package/dist/core/fixFirst.js +109 -0
- package/dist/core/fixFirst.js.map +1 -0
- package/dist/core/frameworkSources.d.ts +3 -1
- package/dist/core/frameworkSources.js +44 -3
- package/dist/core/frameworkSources.js.map +1 -1
- package/dist/core/indexCache.js +5 -1
- package/dist/core/indexCache.js.map +1 -1
- package/dist/core/preflight.js +32 -7
- package/dist/core/preflight.js.map +1 -1
- package/dist/core/qualityScorecard.js +5 -1
- package/dist/core/qualityScorecard.js.map +1 -1
- package/dist/core/releaseEvidence.d.ts +6 -1
- package/dist/core/releaseEvidence.js +478 -10
- package/dist/core/releaseEvidence.js.map +1 -1
- package/dist/core/start.d.ts +8 -0
- package/dist/core/start.js +193 -0
- package/dist/core/start.js.map +1 -0
- package/dist/core/taint.js +89 -9
- package/dist/core/taint.js.map +1 -1
- package/dist/core/workplan.d.ts +2 -1
- package/dist/core/workplan.js +80 -3
- package/dist/core/workplan.js.map +1 -1
- package/dist/index.d.ts +7 -5
- package/dist/index.js +5 -3
- package/dist/index.js.map +1 -1
- package/dist/mcp/tools/adoption.js +7 -3
- package/dist/mcp/tools/adoption.js.map +1 -1
- package/dist/mcp/tools/evidencePack.js +5 -0
- package/dist/mcp/tools/evidencePack.js.map +1 -1
- package/dist/mcp/tools/start.d.ts +2 -0
- package/dist/mcp/tools/start.js +58 -0
- package/dist/mcp/tools/start.js.map +1 -0
- package/dist/mcp/tools.js +2 -0
- package/dist/mcp/tools.js.map +1 -1
- package/dist/projscan-sbom.cdx.json +6 -6
- package/dist/tool-manifest.json +48 -5
- package/dist/types.d.ts +188 -0
- package/dist/utils/baseline.js +62 -1
- package/dist/utils/baseline.js.map +1 -1
- package/dist/utils/formatSupport.d.ts +6 -0
- package/dist/utils/formatSupport.js +6 -0
- package/dist/utils/formatSupport.js.map +1 -1
- package/docs/PLUGIN-GALLERY.md +25 -0
- package/docs/examples/plugins/api-route-ownership.mjs +60 -0
- package/docs/examples/plugins/api-route-ownership.projscan-plugin.json +8 -0
- package/docs/examples/plugins/monorepo-boundary.mjs +37 -0
- package/docs/examples/plugins/monorepo-boundary.projscan-plugin.json +8 -0
- package/docs/examples/plugins/security-sensitive-files.mjs +18 -0
- package/docs/examples/plugins/security-sensitive-files.projscan-plugin.json +8 -0
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -34,15 +34,17 @@ export { computeReview } from './core/review.js';
|
|
|
34
34
|
export { buildSemanticGraph } from './core/semanticGraph.js';
|
|
35
35
|
export { computeDataflow, type DataflowOptions } from './core/dataflow.js';
|
|
36
36
|
export { computeGraphCorpus } from './core/graphCorpus.js';
|
|
37
|
-
export { computeWorkplan } from './core/workplan.js';
|
|
37
|
+
export { buildWorkplanHandoff, computeWorkplan } from './core/workplan.js';
|
|
38
38
|
export { computeReleaseTrain } from './core/releaseTrain.js';
|
|
39
39
|
export { computeBugHunt } from './core/bugHunt.js';
|
|
40
|
-
export { computeEvidencePack } from './core/releaseEvidence.js';
|
|
40
|
+
export { computeEvidencePack, renderEvidencePackPrComment, validateEvidencePackPrComment } from './core/releaseEvidence.js';
|
|
41
41
|
export { computeRegressionPlan } from './core/regressionPlan.js';
|
|
42
42
|
export { computeAgentBrief } from './core/agentBrief.js';
|
|
43
43
|
export { computeQualityScorecard } from './core/qualityScorecard.js';
|
|
44
|
-
export {
|
|
45
|
-
export
|
|
44
|
+
export { computeStartReport } from './core/start.js';
|
|
45
|
+
export { computeDogfoodReport } from './core/dogfood.js';
|
|
46
|
+
export { computeFirstRunDiagnostics, computeMcpSetupDoctor, getGithubActionStarter, getMcpConfigGuide, getPolicyStarterKit, getWorkflowRecipes, isPolicyStarterTeam, writeGithubActionStarter, writePolicyStarterKit, writeTeamStarterKit, } from './core/adoption.js';
|
|
47
|
+
export type { AgentWorkflowRecipe, FirstRunDiagnostic, FirstRunReport, McpConfigCatalog, McpConfigGuide, McpClientId, McpSetupDoctorCheck, McpSetupDoctorReport, TeamStarterKit, TeamOnboardingStep, WorkflowRecipeCatalog, GithubActionStarter, PolicyStarterKit, PolicyStarterTeam, WriteGithubActionStarterResult, WritePolicyStarterResult, } from './core/adoption.js';
|
|
46
48
|
export { suggestFixForIssue, previewSuggestionForIssue, syntheticIssue, findIssue } from './core/fixSuggest.js';
|
|
47
49
|
export { explainIssue } from './core/explainIssue.js';
|
|
48
50
|
export { computeImpact } from './core/impact.js';
|
|
@@ -54,4 +56,4 @@ export { getPromptDefinitions } from './mcp/prompts.js';
|
|
|
54
56
|
export { getResourceDefinitions } from './mcp/resources.js';
|
|
55
57
|
export { BUILTIN_LANGUAGE_IDS } from './core/languages/LanguageAdapter.js';
|
|
56
58
|
export type { BuiltinLanguageId, LanguageId, LanguageAdapter } from './core/languages/LanguageAdapter.js';
|
|
57
|
-
export type { ScanResult, FileEntry, DirectoryNode, LanguageBreakdown, LanguageStat, FrameworkResult, DetectedFramework, DependencyReport, DependencyRisk, Issue, IssueLocation, IssueSeverity, Fix, FixResult, FileExplanation, FileInspection, FunctionDetail, ImportInfo, ExportInfo, ArchitectureLayer, AnalysisReport, AgentBriefGuardrail, AgentBriefIntent, AgentBriefItem, AgentBriefReport, ReportFormat, FileHotspot, HotspotReport, AuthorShare, BaselineHotspot, HotspotDelta, HotspotDiffSummary, McpToolDefinition, McpPromptDefinition, McpResourceDefinition, ProjscanConfig, LoadedConfig, SemverDrift, OutdatedPackage, OutdatedReport, AuditSeverity, AuditFinding, AuditReport, UpgradePreview, CoverageSource, FileCoverage, CoverageReport, CoverageJoinedHotspot, CoverageJoinedReport, ReviewReport, ReviewFile, ReviewCycle, ReviewDataflowRisk, ReviewFunction, ReviewDependencyChange, FixSuggestion, IssueExplanation, ImportPolicyRule, ImpactReport, ImpactNode, GraphCorpusFixtureMetrics, GraphCorpusReport, DataflowReport, DataflowRisk, DataflowRiskConfidence, DataflowRiskKind, DataflowRiskSeverity, SemanticGraphEdge, SemanticGraphEdgeKind, SemanticGraphNode, SemanticGraphNodeKind, SemanticGraphReport, BugHuntFinding, BugHuntReport, BugHuntVerdict, EvidencePackArtifact, EvidencePackArtifactStatus, EvidencePackReport, EvidencePackVerdict, RegressionPlanLevel, RegressionPlanReport, RegressionPlanTarget, RegressionPlanVerdict, QualityScorecardDimension, QualityScorecardReport, QualityScorecardRisk, QualityScorecardStatus, QualityScorecardVerdict, ReleaseTrainReport, ReleaseTrainTask, ReleaseTrainTrack, WorkplanCoordination, WorkplanEvidence, WorkplanMode, WorkplanPriority, WorkplanReport, WorkplanTask, WorkplanTopRisk, WorkplanVerification, } from './types.js';
|
|
59
|
+
export type { ScanResult, FileEntry, DirectoryNode, LanguageBreakdown, LanguageStat, FrameworkResult, DetectedFramework, DependencyReport, DependencyRisk, Issue, IssueLocation, IssueSeverity, Fix, FixResult, FileExplanation, FileInspection, FunctionDetail, ImportInfo, ExportInfo, ArchitectureLayer, AnalysisReport, AgentBriefGuardrail, AgentBriefIntent, AgentBriefItem, AgentBriefReport, ReportFormat, FileHotspot, HotspotReport, AuthorShare, BaselineHotspot, HotspotDelta, HotspotDiffSummary, McpToolDefinition, McpPromptDefinition, McpResourceDefinition, ProjscanConfig, LoadedConfig, SemverDrift, OutdatedPackage, OutdatedReport, AuditSeverity, AuditFinding, AuditReport, UpgradePreview, CoverageSource, FileCoverage, CoverageReport, CoverageJoinedHotspot, CoverageJoinedReport, ReviewReport, ReviewFile, ReviewCycle, ReviewDataflowRisk, ReviewFunction, ReviewDependencyChange, FixSuggestion, IssueExplanation, ImportPolicyRule, ImpactReport, ImpactNode, GraphCorpusFixtureMetrics, GraphCorpusReport, DataflowReport, DataflowRisk, DataflowRiskConfidence, DataflowRiskKind, DataflowRiskSeverity, SemanticGraphEdge, SemanticGraphEdgeKind, SemanticGraphNode, SemanticGraphNodeKind, SemanticGraphReport, BugHuntFinding, BugHuntReport, BugHuntVerdict, EvidencePackArtifact, EvidencePackArtifactStatus, EvidencePackPrCommentValidation, EvidencePackPrCommentValidationCheck, EvidencePackReport, EvidencePackTrustCalibration, EvidencePackVerdict, RegressionPlanLevel, RegressionPlanReport, RegressionPlanTarget, RegressionPlanVerdict, QualityScorecardDimension, QualityScorecardReport, QualityScorecardRisk, QualityScorecardStatus, QualityScorecardVerdict, StartAdoptionGap, StartAdoptionLoop, StartAdoptionLoopMetric, StartReport, StartRisk, StartWorkflowRecommendation, DogfoodReport, DogfoodRepoResult, DogfoodRepoStatus, ReleaseTrainReport, ReleaseTrainTask, ReleaseTrainTrack, WorkplanCoordination, WorkplanHandoffPayload, WorkplanEvidence, WorkplanMode, WorkplanPriority, WorkplanReport, WorkplanTask, WorkplanTopRisk, WorkplanVerification, } from './types.js';
|
package/dist/index.js
CHANGED
|
@@ -32,14 +32,16 @@ export { computeReview } from './core/review.js';
|
|
|
32
32
|
export { buildSemanticGraph } from './core/semanticGraph.js';
|
|
33
33
|
export { computeDataflow } from './core/dataflow.js';
|
|
34
34
|
export { computeGraphCorpus } from './core/graphCorpus.js';
|
|
35
|
-
export { computeWorkplan } from './core/workplan.js';
|
|
35
|
+
export { buildWorkplanHandoff, computeWorkplan } from './core/workplan.js';
|
|
36
36
|
export { computeReleaseTrain } from './core/releaseTrain.js';
|
|
37
37
|
export { computeBugHunt } from './core/bugHunt.js';
|
|
38
|
-
export { computeEvidencePack } from './core/releaseEvidence.js';
|
|
38
|
+
export { computeEvidencePack, renderEvidencePackPrComment, validateEvidencePackPrComment } from './core/releaseEvidence.js';
|
|
39
39
|
export { computeRegressionPlan } from './core/regressionPlan.js';
|
|
40
40
|
export { computeAgentBrief } from './core/agentBrief.js';
|
|
41
41
|
export { computeQualityScorecard } from './core/qualityScorecard.js';
|
|
42
|
-
export {
|
|
42
|
+
export { computeStartReport } from './core/start.js';
|
|
43
|
+
export { computeDogfoodReport } from './core/dogfood.js';
|
|
44
|
+
export { computeFirstRunDiagnostics, computeMcpSetupDoctor, getGithubActionStarter, getMcpConfigGuide, getPolicyStarterKit, getWorkflowRecipes, isPolicyStarterTeam, writeGithubActionStarter, writePolicyStarterKit, writeTeamStarterKit, } from './core/adoption.js';
|
|
43
45
|
export { suggestFixForIssue, previewSuggestionForIssue, syntheticIssue, findIssue } from './core/fixSuggest.js';
|
|
44
46
|
export { explainIssue } from './core/explainIssue.js';
|
|
45
47
|
export { computeImpact } from './core/impact.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvG,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEzD,OAAO,EACL,cAAc,EACd,wBAAwB,EACxB,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,SAAS,EACT,SAAS,EACT,WAAW,GACZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACzF,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACzG,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EACL,gBAAgB,EAChB,MAAM,EACN,QAAQ,EACR,WAAW,EACX,cAAc,GACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,mBAAmB,EACnB,SAAS,EACT,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,aAAa,GACd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,oBAAoB,GACrB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,KAAK,IAAI,WAAW,EAAE,OAAO,IAAI,aAAa,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACzG,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAwB,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { computeFirstRunDiagnostics, getMcpConfigGuide, getWorkflowRecipes, isMcpClientId, } from '../../core/adoption.js';
|
|
1
|
+
import { computeFirstRunDiagnostics, computeMcpSetupDoctor, getMcpConfigGuide, getWorkflowRecipes, isMcpClientId, } from '../../core/adoption.js';
|
|
2
2
|
export const adoptionTool = {
|
|
3
3
|
name: 'projscan_adoption',
|
|
4
4
|
description: 'Adoption helper for new projscan users and agents. Returns ready-to-paste MCP client configs, workflow recipes, or first-run diagnostics without mutating the repo.',
|
|
@@ -7,12 +7,12 @@ export const adoptionTool = {
|
|
|
7
7
|
properties: {
|
|
8
8
|
action: {
|
|
9
9
|
type: 'string',
|
|
10
|
-
enum: ['mcp_config', 'recipes', 'first_run'],
|
|
10
|
+
enum: ['mcp_config', 'recipes', 'first_run', 'mcp_doctor'],
|
|
11
11
|
description: 'What to return. mcp_config returns client snippets, recipes returns agent workflow recipes, first_run checks setup diagnostics. Default: recipes.',
|
|
12
12
|
},
|
|
13
13
|
client: {
|
|
14
14
|
type: 'string',
|
|
15
|
-
description: 'For action=mcp_config: all, claude-desktop, claude-code, cursor, codex, continue, windsurf, cline, zed, or gemini. Default: all.',
|
|
15
|
+
description: 'For action=mcp_config or action=mcp_doctor: all, claude-desktop, claude-code, cursor, codex, continue, windsurf, cline, zed, or gemini. Default: all.',
|
|
16
16
|
},
|
|
17
17
|
max_tokens: {
|
|
18
18
|
type: 'number',
|
|
@@ -26,6 +26,10 @@ export const adoptionTool = {
|
|
|
26
26
|
const client = isMcpClientId(args.client) ? args.client : 'all';
|
|
27
27
|
return { config: getMcpConfigGuide(client) };
|
|
28
28
|
}
|
|
29
|
+
if (action === 'mcp_doctor') {
|
|
30
|
+
const client = isMcpClientId(args.client) ? args.client : 'all';
|
|
31
|
+
return { mcpDoctor: await computeMcpSetupDoctor(rootPath, client) };
|
|
32
|
+
}
|
|
29
33
|
if (action === 'first_run') {
|
|
30
34
|
return { firstRun: await computeFirstRunDiagnostics(rootPath) };
|
|
31
35
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adoption.js","sourceRoot":"","sources":["../../../src/mcp/tools/adoption.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,GACd,MAAM,wBAAwB,CAAC;AAGhC,MAAM,CAAC,MAAM,YAAY,GAAY;IACnC,IAAI,EAAE,mBAAmB;IACzB,WAAW,EACT,qKAAqK;IACvK,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,YAAY,EAAE,SAAS,EAAE,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"adoption.js","sourceRoot":"","sources":["../../../src/mcp/tools/adoption.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,GACd,MAAM,wBAAwB,CAAC;AAGhC,MAAM,CAAC,MAAM,YAAY,GAAY;IACnC,IAAI,EAAE,mBAAmB;IACzB,WAAW,EACT,qKAAqK;IACvK,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,CAAC;gBAC1D,WAAW,EACT,mJAAmJ;aACtJ;YACD,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,WAAW,EACT,uJAAuJ;aAC1J;YACD,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,+CAA+C;aAC7D;SACF;KACF;IACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;QAChC,MAAM,MAAM,GAAG,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QACzE,IAAI,MAAM,KAAK,YAAY,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;YAChE,OAAO,EAAE,MAAM,EAAE,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/C,CAAC;QACD,IAAI,MAAM,KAAK,YAAY,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;YAChE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC;QACtE,CAAC;QACD,IAAI,MAAM,KAAK,WAAW,EAAE,CAAC;YAC3B,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClE,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,EAAE,CAAC;IAC3C,CAAC;CACF,CAAC"}
|
|
@@ -14,6 +14,10 @@ export const evidencePackTool = {
|
|
|
14
14
|
type: 'boolean',
|
|
15
15
|
description: 'Include website-update prompt text in the response.',
|
|
16
16
|
},
|
|
17
|
+
pr_comment: {
|
|
18
|
+
type: 'boolean',
|
|
19
|
+
description: 'Include a concise GitHub PR comment markdown artifact in the response.',
|
|
20
|
+
},
|
|
17
21
|
max_findings: {
|
|
18
22
|
type: 'number',
|
|
19
23
|
description: 'Maximum bug-hunt findings to include. Default: 10, max: 25.',
|
|
@@ -30,6 +34,7 @@ export const evidencePackTool = {
|
|
|
30
34
|
? args.lines.filter((line) => typeof line === 'string')
|
|
31
35
|
: undefined,
|
|
32
36
|
includeWebsitePrompt: args.website_prompt === true,
|
|
37
|
+
includePrComment: args.pr_comment === true,
|
|
33
38
|
maxFindings: typeof args.max_findings === 'number' && Number.isFinite(args.max_findings)
|
|
34
39
|
? args.max_findings
|
|
35
40
|
: undefined,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evidencePack.js","sourceRoot":"","sources":["../../../src/mcp/tools/evidencePack.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAGpE,MAAM,CAAC,MAAM,gBAAgB,GAAY;IACvC,IAAI,EAAE,wBAAwB;IAC9B,WAAW,EACT,iGAAiG;IACnG,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,KAAK,EAAE;gBACL,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACzB,WAAW,EAAE,0DAA0D;aACxE;YACD,cAAc,EAAE;gBACd,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,qDAAqD;aACnE;YACD,YAAY,EAAE;gBACZ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,6DAA6D;aAC3E;YACD,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,+CAA+C;aAC7D;SACF;KACF;IACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;QAClC,YAAY,EAAE,MAAM,mBAAmB,CAAC,QAAQ,EAAE;YAChD,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC9B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC;gBACvE,CAAC,CAAC,SAAS;YACb,oBAAoB,EAAE,IAAI,CAAC,cAAc,KAAK,IAAI;YAClD,WAAW,EACT,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC;gBACzE,CAAC,CAAC,IAAI,CAAC,YAAY;gBACnB,CAAC,CAAC,SAAS;SAChB,CAAC;KACH,CAAC;CACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"evidencePack.js","sourceRoot":"","sources":["../../../src/mcp/tools/evidencePack.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAGpE,MAAM,CAAC,MAAM,gBAAgB,GAAY;IACvC,IAAI,EAAE,wBAAwB;IAC9B,WAAW,EACT,iGAAiG;IACnG,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,KAAK,EAAE;gBACL,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACzB,WAAW,EAAE,0DAA0D;aACxE;YACD,cAAc,EAAE;gBACd,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,qDAAqD;aACnE;YACD,UAAU,EAAE;gBACV,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,wEAAwE;aACtF;YACD,YAAY,EAAE;gBACZ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,6DAA6D;aAC3E;YACD,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,+CAA+C;aAC7D;SACF;KACF;IACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;QAClC,YAAY,EAAE,MAAM,mBAAmB,CAAC,QAAQ,EAAE;YAChD,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC9B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC;gBACvE,CAAC,CAAC,SAAS;YACb,oBAAoB,EAAE,IAAI,CAAC,cAAc,KAAK,IAAI;YAClD,gBAAgB,EAAE,IAAI,CAAC,UAAU,KAAK,IAAI;YAC1C,WAAW,EACT,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC;gBACzE,CAAC,CAAC,IAAI,CAAC,YAAY;gBACnB,CAAC,CAAC,SAAS;SAChB,CAAC;KACH,CAAC;CACH,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { computeStartReport } from '../../core/start.js';
|
|
2
|
+
import { isWorkplanMode } from '../../core/workplan.js';
|
|
3
|
+
const START_MODES = [
|
|
4
|
+
'before_edit',
|
|
5
|
+
'before_commit',
|
|
6
|
+
'before_merge',
|
|
7
|
+
'refactor',
|
|
8
|
+
'release',
|
|
9
|
+
'bug_hunt',
|
|
10
|
+
'hardening',
|
|
11
|
+
];
|
|
12
|
+
export const startTool = {
|
|
13
|
+
name: 'projscan_start',
|
|
14
|
+
description: 'First-60-seconds repo orientation for agents and developers. Composes setup diagnostics, workplan, quality scorecard, adoption gaps, top risks, and next commands into one read-only workflow recommendation.',
|
|
15
|
+
inputSchema: {
|
|
16
|
+
type: 'object',
|
|
17
|
+
properties: {
|
|
18
|
+
mode: {
|
|
19
|
+
type: 'string',
|
|
20
|
+
enum: START_MODES,
|
|
21
|
+
description: 'Workflow mode to orient around. Default: before_edit.',
|
|
22
|
+
},
|
|
23
|
+
max_tasks: {
|
|
24
|
+
type: 'number',
|
|
25
|
+
description: 'Maximum workplan tasks to inspect. Default: 5, max: 12.',
|
|
26
|
+
},
|
|
27
|
+
max_risks: {
|
|
28
|
+
type: 'number',
|
|
29
|
+
description: 'Maximum top risks to return. Default: 5, max: 12.',
|
|
30
|
+
},
|
|
31
|
+
include_handoff: {
|
|
32
|
+
type: 'boolean',
|
|
33
|
+
description: 'Include a compact handoff payload for the next agent.',
|
|
34
|
+
},
|
|
35
|
+
max_tokens: {
|
|
36
|
+
type: 'number',
|
|
37
|
+
description: 'Cap the response to roughly this many tokens.',
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
handler: async (args, rootPath) => ({
|
|
42
|
+
start: await computeStartReport(rootPath, {
|
|
43
|
+
mode: readMode(args.mode),
|
|
44
|
+
maxTasks: readNumber(args.max_tasks),
|
|
45
|
+
maxRisks: readNumber(args.max_risks),
|
|
46
|
+
includeHandoff: args.include_handoff === true,
|
|
47
|
+
}),
|
|
48
|
+
}),
|
|
49
|
+
};
|
|
50
|
+
function readMode(value) {
|
|
51
|
+
if (typeof value === 'string' && isWorkplanMode(value))
|
|
52
|
+
return value;
|
|
53
|
+
return 'before_edit';
|
|
54
|
+
}
|
|
55
|
+
function readNumber(value) {
|
|
56
|
+
return typeof value === 'number' && Number.isFinite(value) ? value : undefined;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=start.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/mcp/tools/start.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAIxD,MAAM,WAAW,GAA4B;IAC3C,aAAa;IACb,eAAe;IACf,cAAc;IACd,UAAU;IACV,SAAS;IACT,UAAU;IACV,WAAW;CACZ,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAY;IAChC,IAAI,EAAE,gBAAgB;IACtB,WAAW,EACT,+MAA+M;IACjN,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,WAAW;gBACjB,WAAW,EAAE,uDAAuD;aACrE;YACD,SAAS,EAAE;gBACT,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,yDAAyD;aACvE;YACD,SAAS,EAAE;gBACT,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,mDAAmD;aACjE;YACD,eAAe,EAAE;gBACf,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,uDAAuD;aACrE;YACD,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,+CAA+C;aAC7D;SACF;KACF;IACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;QAClC,KAAK,EAAE,MAAM,kBAAkB,CAAC,QAAQ,EAAE;YACxC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;YACzB,QAAQ,EAAE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC;YACpC,QAAQ,EAAE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC;YACpC,cAAc,EAAE,IAAI,CAAC,eAAe,KAAK,IAAI;SAC9C,CAAC;KACH,CAAC;CACH,CAAC;AAEF,SAAS,QAAQ,CAAC,KAAc;IAC9B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,cAAc,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACrE,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,SAAS,UAAU,CAAC,KAAc;IAChC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACjF,CAAC"}
|
package/dist/mcp/tools.js
CHANGED
|
@@ -47,6 +47,7 @@ import { regressionPlanTool } from './tools/regressionPlan.js';
|
|
|
47
47
|
import { agentBriefTool } from './tools/agentBrief.js';
|
|
48
48
|
import { qualityScorecardTool } from './tools/qualityScorecard.js';
|
|
49
49
|
import { adoptionTool } from './tools/adoption.js';
|
|
50
|
+
import { startTool } from './tools/start.js';
|
|
50
51
|
const tools = [
|
|
51
52
|
analyzeTool,
|
|
52
53
|
doctorTool,
|
|
@@ -87,6 +88,7 @@ const tools = [
|
|
|
87
88
|
agentBriefTool,
|
|
88
89
|
qualityScorecardTool,
|
|
89
90
|
adoptionTool,
|
|
91
|
+
startTool,
|
|
90
92
|
];
|
|
91
93
|
export function getToolDefinitions() {
|
|
92
94
|
return tools.map(({ name, description, inputSchema }) => ({ name, description, inputSchema }));
|
package/dist/mcp/tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
{
|
|
2
2
|
"bomFormat": "CycloneDX",
|
|
3
3
|
"specVersion": "1.5",
|
|
4
|
-
"serialNumber": "urn:uuid:
|
|
4
|
+
"serialNumber": "urn:uuid:393240fc-bbc5-4a20-8554-f9eb09eeeade",
|
|
5
5
|
"version": 1,
|
|
6
6
|
"metadata": {
|
|
7
|
-
"timestamp": "2026-05-
|
|
7
|
+
"timestamp": "2026-05-30T15:00:35.686Z",
|
|
8
8
|
"tools": [
|
|
9
9
|
{
|
|
10
10
|
"vendor": "projscan",
|
|
11
11
|
"name": "projscan-sbom-generator",
|
|
12
|
-
"version": "3.0.
|
|
12
|
+
"version": "3.0.5"
|
|
13
13
|
}
|
|
14
14
|
],
|
|
15
15
|
"component": {
|
|
16
16
|
"type": "application",
|
|
17
|
-
"bom-ref": "pkg:npm/projscan@3.0.
|
|
17
|
+
"bom-ref": "pkg:npm/projscan@3.0.5",
|
|
18
18
|
"name": "projscan",
|
|
19
|
-
"version": "3.0.
|
|
20
|
-
"purl": "pkg:npm/projscan@3.0.
|
|
19
|
+
"version": "3.0.5",
|
|
20
|
+
"purl": "pkg:npm/projscan@3.0.5"
|
|
21
21
|
}
|
|
22
22
|
},
|
|
23
23
|
"components": [
|
package/dist/tool-manifest.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "projscan",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.5",
|
|
4
4
|
"mcpProtocolVersion": "2025-03-26",
|
|
5
|
-
"generatedAt": "2026-05-
|
|
6
|
-
"toolCount":
|
|
5
|
+
"generatedAt": "2026-05-30T15:00:40.929Z",
|
|
6
|
+
"toolCount": 40,
|
|
7
7
|
"tools": [
|
|
8
8
|
{
|
|
9
9
|
"name": "projscan_analyze",
|
|
@@ -931,6 +931,10 @@
|
|
|
931
931
|
"type": "boolean",
|
|
932
932
|
"description": "Include website-update prompt text in the response."
|
|
933
933
|
},
|
|
934
|
+
"pr_comment": {
|
|
935
|
+
"type": "boolean",
|
|
936
|
+
"description": "Include a concise GitHub PR comment markdown artifact in the response."
|
|
937
|
+
},
|
|
934
938
|
"max_findings": {
|
|
935
939
|
"type": "number",
|
|
936
940
|
"description": "Maximum bug-hunt findings to include. Default: 10, max: 25."
|
|
@@ -1031,13 +1035,52 @@
|
|
|
1031
1035
|
"enum": [
|
|
1032
1036
|
"mcp_config",
|
|
1033
1037
|
"recipes",
|
|
1034
|
-
"first_run"
|
|
1038
|
+
"first_run",
|
|
1039
|
+
"mcp_doctor"
|
|
1035
1040
|
],
|
|
1036
1041
|
"description": "What to return. mcp_config returns client snippets, recipes returns agent workflow recipes, first_run checks setup diagnostics. Default: recipes."
|
|
1037
1042
|
},
|
|
1038
1043
|
"client": {
|
|
1039
1044
|
"type": "string",
|
|
1040
|
-
"description": "For action=mcp_config: all, claude-desktop, claude-code, cursor, codex, continue, windsurf, cline, zed, or gemini. Default: all."
|
|
1045
|
+
"description": "For action=mcp_config or action=mcp_doctor: all, claude-desktop, claude-code, cursor, codex, continue, windsurf, cline, zed, or gemini. Default: all."
|
|
1046
|
+
},
|
|
1047
|
+
"max_tokens": {
|
|
1048
|
+
"type": "number",
|
|
1049
|
+
"description": "Cap the response to roughly this many tokens."
|
|
1050
|
+
}
|
|
1051
|
+
}
|
|
1052
|
+
}
|
|
1053
|
+
},
|
|
1054
|
+
{
|
|
1055
|
+
"name": "projscan_start",
|
|
1056
|
+
"description": "First-60-seconds repo orientation for agents and developers. Composes setup diagnostics, workplan, quality scorecard, adoption gaps, top risks, and next commands into one read-only workflow recommendation.",
|
|
1057
|
+
"inputSchema": {
|
|
1058
|
+
"type": "object",
|
|
1059
|
+
"properties": {
|
|
1060
|
+
"mode": {
|
|
1061
|
+
"type": "string",
|
|
1062
|
+
"enum": [
|
|
1063
|
+
"before_edit",
|
|
1064
|
+
"before_commit",
|
|
1065
|
+
"before_merge",
|
|
1066
|
+
"refactor",
|
|
1067
|
+
"release",
|
|
1068
|
+
"bug_hunt",
|
|
1069
|
+
"hardening"
|
|
1070
|
+
],
|
|
1071
|
+
"description": "Workflow mode to orient around. Default: before_edit."
|
|
1072
|
+
},
|
|
1073
|
+
"max_tasks": {
|
|
1074
|
+
"type": "number",
|
|
1075
|
+
"description": "Maximum workplan tasks to inspect. Default: 5, max: 12."
|
|
1076
|
+
},
|
|
1077
|
+
"max_risks": {
|
|
1078
|
+
"type": "number",
|
|
1079
|
+
"description": "Maximum top risks to return. Default: 5, max: 12."
|
|
1080
|
+
},
|
|
1081
|
+
"include_handoff": {
|
|
1082
|
+
"type": "boolean",
|
|
1083
|
+
"description": "Include a compact handoff payload for the next agent."
|
|
1041
1084
|
},
|
|
1042
1085
|
"max_tokens": {
|
|
1043
1086
|
"type": "number",
|
package/dist/types.d.ts
CHANGED
|
@@ -311,6 +311,17 @@ export interface WorkplanVerification {
|
|
|
311
311
|
commands: string[];
|
|
312
312
|
expected: string;
|
|
313
313
|
}
|
|
314
|
+
export interface FixFirstRecommendation {
|
|
315
|
+
id: string;
|
|
316
|
+
title: string;
|
|
317
|
+
source: string;
|
|
318
|
+
priority: WorkplanPriority;
|
|
319
|
+
whyFirst: string;
|
|
320
|
+
files: string[];
|
|
321
|
+
owner?: string;
|
|
322
|
+
commands: string[];
|
|
323
|
+
expected?: string;
|
|
324
|
+
}
|
|
314
325
|
export interface WorkplanTask {
|
|
315
326
|
id: string;
|
|
316
327
|
priority: WorkplanPriority;
|
|
@@ -318,12 +329,14 @@ export interface WorkplanTask {
|
|
|
318
329
|
why: string;
|
|
319
330
|
evidence: WorkplanEvidence[];
|
|
320
331
|
files: string[];
|
|
332
|
+
owner?: string;
|
|
321
333
|
suggestedTools: string[];
|
|
322
334
|
verification: WorkplanVerification;
|
|
323
335
|
handoffText: string;
|
|
324
336
|
}
|
|
325
337
|
export interface WorkplanTopRisk extends WorkplanEvidence {
|
|
326
338
|
priority: WorkplanPriority;
|
|
339
|
+
owner?: string;
|
|
327
340
|
}
|
|
328
341
|
export interface WorkplanCoordination {
|
|
329
342
|
touchedFiles: string[];
|
|
@@ -337,6 +350,7 @@ export interface WorkplanReport {
|
|
|
337
350
|
summary: string;
|
|
338
351
|
topRisks: WorkplanTopRisk[];
|
|
339
352
|
tasks: WorkplanTask[];
|
|
353
|
+
fixFirst?: FixFirstRecommendation;
|
|
340
354
|
coordination: WorkplanCoordination;
|
|
341
355
|
suggestedNextActions: PreflightSuggestedAction[];
|
|
342
356
|
truncated?: boolean;
|
|
@@ -406,6 +420,7 @@ export interface BugHuntReport {
|
|
|
406
420
|
};
|
|
407
421
|
topSuspects: BugHuntFinding[];
|
|
408
422
|
fixQueue: BugHuntFinding[];
|
|
423
|
+
fixFirst?: FixFirstRecommendation;
|
|
409
424
|
verificationMatrix: Array<{
|
|
410
425
|
command: string;
|
|
411
426
|
reason: string;
|
|
@@ -423,6 +438,45 @@ export interface EvidencePackArtifact {
|
|
|
423
438
|
evidence: string[];
|
|
424
439
|
commands: string[];
|
|
425
440
|
}
|
|
441
|
+
export interface EvidencePackTopRisk {
|
|
442
|
+
priority: WorkplanPriority;
|
|
443
|
+
title: string;
|
|
444
|
+
files: string[];
|
|
445
|
+
owner?: string;
|
|
446
|
+
command: string;
|
|
447
|
+
}
|
|
448
|
+
export interface EvidencePackTeamRoute {
|
|
449
|
+
owner: string;
|
|
450
|
+
files: string[];
|
|
451
|
+
reason: string;
|
|
452
|
+
}
|
|
453
|
+
export interface EvidencePackTrustCalibration {
|
|
454
|
+
verdict: 'clean' | 'manual_review' | 'actual_defect';
|
|
455
|
+
summary: string;
|
|
456
|
+
concreteBlockers: string[];
|
|
457
|
+
manualReviewSignals: string[];
|
|
458
|
+
watchSignals: string[];
|
|
459
|
+
}
|
|
460
|
+
export interface EvidencePackPrSummary {
|
|
461
|
+
verdictLabel: string;
|
|
462
|
+
decision: string;
|
|
463
|
+
trust: EvidencePackTrustCalibration;
|
|
464
|
+
topRisks: EvidencePackTopRisk[];
|
|
465
|
+
teamRoutes: EvidencePackTeamRoute[];
|
|
466
|
+
ownershipSuggestion?: string;
|
|
467
|
+
fixFirst?: FixFirstRecommendation;
|
|
468
|
+
nextCommands: string[];
|
|
469
|
+
baselineTrend?: BaselineTrend;
|
|
470
|
+
}
|
|
471
|
+
export interface EvidencePackPrCommentValidationCheck {
|
|
472
|
+
id: string;
|
|
473
|
+
status: 'pass' | 'warn' | 'fail';
|
|
474
|
+
summary: string;
|
|
475
|
+
}
|
|
476
|
+
export interface EvidencePackPrCommentValidation {
|
|
477
|
+
status: 'pass' | 'warn' | 'fail';
|
|
478
|
+
checks: EvidencePackPrCommentValidationCheck[];
|
|
479
|
+
}
|
|
426
480
|
export interface EvidencePackReport {
|
|
427
481
|
schemaVersion: 1;
|
|
428
482
|
currentVersion: string | null;
|
|
@@ -441,6 +495,9 @@ export interface EvidencePackReport {
|
|
|
441
495
|
artifacts: EvidencePackArtifact[];
|
|
442
496
|
changelogEntries: string[];
|
|
443
497
|
websitePrompt?: string;
|
|
498
|
+
prComment?: string;
|
|
499
|
+
prCommentValidation?: EvidencePackPrCommentValidation;
|
|
500
|
+
prSummary?: EvidencePackPrSummary;
|
|
444
501
|
suggestedNextActions: PreflightSuggestedAction[];
|
|
445
502
|
}
|
|
446
503
|
export type RegressionPlanLevel = 'smoke' | 'focused' | 'full';
|
|
@@ -518,6 +575,115 @@ export interface AgentBriefReport {
|
|
|
518
575
|
suggestedNextActions: PreflightSuggestedAction[];
|
|
519
576
|
truncated?: boolean;
|
|
520
577
|
}
|
|
578
|
+
export interface WorkplanHandoffPayload {
|
|
579
|
+
summary: string;
|
|
580
|
+
verdict: PreflightVerdict;
|
|
581
|
+
mode: WorkplanMode;
|
|
582
|
+
next: string[];
|
|
583
|
+
verificationCommands: string[];
|
|
584
|
+
coordination: WorkplanCoordination;
|
|
585
|
+
markdown: string;
|
|
586
|
+
}
|
|
587
|
+
export interface StartWorkflowRecommendation {
|
|
588
|
+
id: string;
|
|
589
|
+
name: string;
|
|
590
|
+
why: string;
|
|
591
|
+
commands: string[];
|
|
592
|
+
mcpTools: string[];
|
|
593
|
+
}
|
|
594
|
+
export interface StartRisk {
|
|
595
|
+
id: string;
|
|
596
|
+
priority: WorkplanPriority;
|
|
597
|
+
title: string;
|
|
598
|
+
source: string;
|
|
599
|
+
files: string[];
|
|
600
|
+
command: string;
|
|
601
|
+
}
|
|
602
|
+
export interface StartAdoptionGap {
|
|
603
|
+
id: string;
|
|
604
|
+
status: 'info' | 'warn' | 'fail';
|
|
605
|
+
title: string;
|
|
606
|
+
summary: string;
|
|
607
|
+
command?: string;
|
|
608
|
+
}
|
|
609
|
+
export interface StartAdoptionLoopMetric {
|
|
610
|
+
id: string;
|
|
611
|
+
label: string;
|
|
612
|
+
target: string;
|
|
613
|
+
command?: string;
|
|
614
|
+
}
|
|
615
|
+
export interface StartAdoptionLoop {
|
|
616
|
+
cadence: 'every_pr';
|
|
617
|
+
why: string;
|
|
618
|
+
metrics: StartAdoptionLoopMetric[];
|
|
619
|
+
nextCommands: string[];
|
|
620
|
+
}
|
|
621
|
+
export interface StartReport {
|
|
622
|
+
schemaVersion: 1;
|
|
623
|
+
readOnly: true;
|
|
624
|
+
rootPath: string;
|
|
625
|
+
mode: WorkplanMode;
|
|
626
|
+
summary: string;
|
|
627
|
+
setup: {
|
|
628
|
+
overall: 'pass' | 'warn' | 'fail' | 'info';
|
|
629
|
+
diagnostics: Array<{
|
|
630
|
+
id: string;
|
|
631
|
+
label: string;
|
|
632
|
+
status: 'pass' | 'warn' | 'fail' | 'info';
|
|
633
|
+
summary: string;
|
|
634
|
+
detail?: string;
|
|
635
|
+
command?: string;
|
|
636
|
+
}>;
|
|
637
|
+
};
|
|
638
|
+
recommendedWorkflow: StartWorkflowRecommendation;
|
|
639
|
+
evidence: {
|
|
640
|
+
workplanVerdict: PreflightVerdict;
|
|
641
|
+
workplanSummary: string;
|
|
642
|
+
qualityVerdict: QualityScorecardVerdict;
|
|
643
|
+
qualitySummary: string;
|
|
644
|
+
healthScore: number;
|
|
645
|
+
mcpReady: boolean;
|
|
646
|
+
};
|
|
647
|
+
topRisks: StartRisk[];
|
|
648
|
+
fixFirst?: FixFirstRecommendation;
|
|
649
|
+
adoptionGaps: StartAdoptionGap[];
|
|
650
|
+
adoptionLoop?: StartAdoptionLoop;
|
|
651
|
+
nextActions: PreflightSuggestedAction[];
|
|
652
|
+
handoff?: WorkplanHandoffPayload;
|
|
653
|
+
truncated?: boolean;
|
|
654
|
+
}
|
|
655
|
+
export type DogfoodRepoStatus = 'pass' | 'warn' | 'fail';
|
|
656
|
+
export interface DogfoodRepoResult {
|
|
657
|
+
path: string;
|
|
658
|
+
name: string;
|
|
659
|
+
status: DogfoodRepoStatus;
|
|
660
|
+
healthScore: number;
|
|
661
|
+
mcpReady: boolean;
|
|
662
|
+
prCommentReady: boolean;
|
|
663
|
+
repeatUseReady: boolean;
|
|
664
|
+
verdict: EvidencePackVerdict;
|
|
665
|
+
gaps: string[];
|
|
666
|
+
feedbackQuestions: string[];
|
|
667
|
+
nextCommands: string[];
|
|
668
|
+
}
|
|
669
|
+
export interface DogfoodReport {
|
|
670
|
+
schemaVersion: 1;
|
|
671
|
+
readOnly: true;
|
|
672
|
+
rootPath: string;
|
|
673
|
+
targetRepoCount: number;
|
|
674
|
+
summary: string;
|
|
675
|
+
repos: DogfoodRepoResult[];
|
|
676
|
+
totals: {
|
|
677
|
+
reposEvaluated: number;
|
|
678
|
+
passingRepos: number;
|
|
679
|
+
warningRepos: number;
|
|
680
|
+
failingRepos: number;
|
|
681
|
+
prCommentReady: number;
|
|
682
|
+
repeatUseReady: number;
|
|
683
|
+
mcpReady: number;
|
|
684
|
+
};
|
|
685
|
+
suggestedNextActions: PreflightSuggestedAction[];
|
|
686
|
+
}
|
|
521
687
|
export interface GraphCorpusFixtureMetrics {
|
|
522
688
|
name: string;
|
|
523
689
|
fixture: string;
|
|
@@ -560,6 +726,7 @@ export interface QualityScorecardReport {
|
|
|
560
726
|
health: HealthScore;
|
|
561
727
|
dimensions: QualityScorecardDimension[];
|
|
562
728
|
topRisks: QualityScorecardRisk[];
|
|
729
|
+
fixFirst?: FixFirstRecommendation;
|
|
563
730
|
commands: string[];
|
|
564
731
|
suggestedNextActions: PreflightSuggestedAction[];
|
|
565
732
|
truncated?: boolean;
|
|
@@ -637,6 +804,7 @@ export interface Baseline {
|
|
|
637
804
|
severity: IssueSeverity;
|
|
638
805
|
}[];
|
|
639
806
|
hotspots?: BaselineHotspot[];
|
|
807
|
+
issueRuleCounts?: Record<string, number>;
|
|
640
808
|
timestamp: string;
|
|
641
809
|
}
|
|
642
810
|
export interface HotspotDelta {
|
|
@@ -651,6 +819,25 @@ export interface HotspotDiffSummary {
|
|
|
651
819
|
appeared: HotspotDelta[];
|
|
652
820
|
resolved: HotspotDelta[];
|
|
653
821
|
}
|
|
822
|
+
export interface BaselineRecurringRule {
|
|
823
|
+
id: string;
|
|
824
|
+
before: number;
|
|
825
|
+
after: number;
|
|
826
|
+
}
|
|
827
|
+
export interface BaselineTrend {
|
|
828
|
+
scoreDirection: 'up' | 'down' | 'flat';
|
|
829
|
+
scoreDelta: number;
|
|
830
|
+
riskDirection?: 'up' | 'down' | 'flat';
|
|
831
|
+
riskDelta?: number;
|
|
832
|
+
qualityScoreBefore?: number;
|
|
833
|
+
qualityScoreAfter?: number;
|
|
834
|
+
newIssueCount?: number;
|
|
835
|
+
resolvedIssueCount?: number;
|
|
836
|
+
changedSinceBaseline?: string[];
|
|
837
|
+
newHotspots: string[];
|
|
838
|
+
recurringNoisyRules: BaselineRecurringRule[];
|
|
839
|
+
summary: string;
|
|
840
|
+
}
|
|
654
841
|
export interface DiffResult {
|
|
655
842
|
before: Baseline;
|
|
656
843
|
after: Baseline;
|
|
@@ -658,6 +845,7 @@ export interface DiffResult {
|
|
|
658
845
|
newIssues: string[];
|
|
659
846
|
resolvedIssues: string[];
|
|
660
847
|
hotspotDiff?: HotspotDiffSummary;
|
|
848
|
+
trend: BaselineTrend;
|
|
661
849
|
}
|
|
662
850
|
export type ReportFormat = 'console' | 'json' | 'markdown' | 'sarif' | 'html';
|
|
663
851
|
export type SemverDrift = 'patch' | 'minor' | 'major' | 'same' | 'unknown';
|