projscan 2.2.0 → 2.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 +51 -21
- package/dist/cli/commands/agentBrief.d.ts +1 -0
- package/dist/cli/commands/agentBrief.js +68 -0
- package/dist/cli/commands/agentBrief.js.map +1 -0
- package/dist/cli/commands/bugHunt.d.ts +1 -0
- package/dist/cli/commands/bugHunt.js +59 -0
- package/dist/cli/commands/bugHunt.js.map +1 -0
- package/dist/cli/commands/evidencePack.d.ts +1 -0
- package/dist/cli/commands/evidencePack.js +70 -0
- package/dist/cli/commands/evidencePack.js.map +1 -0
- package/dist/cli/commands/qualityScorecard.d.ts +1 -0
- package/dist/cli/commands/qualityScorecard.js +61 -0
- package/dist/cli/commands/qualityScorecard.js.map +1 -0
- package/dist/cli/commands/regressionPlan.d.ts +1 -0
- package/dist/cli/commands/regressionPlan.js +77 -0
- package/dist/cli/commands/regressionPlan.js.map +1 -0
- package/dist/cli/commands/releaseTrain.d.ts +1 -0
- package/dist/cli/commands/releaseTrain.js +58 -0
- package/dist/cli/commands/releaseTrain.js.map +1 -0
- package/dist/cli/commands/workplan.d.ts +1 -0
- package/dist/cli/commands/workplan.js +136 -0
- package/dist/cli/commands/workplan.js.map +1 -0
- package/dist/cli/index.js +14 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/core/agentBrief.d.ts +6 -0
- package/dist/core/agentBrief.js +192 -0
- package/dist/core/agentBrief.js.map +1 -0
- package/dist/core/bugHunt.d.ts +6 -0
- package/dist/core/bugHunt.js +278 -0
- package/dist/core/bugHunt.js.map +1 -0
- package/dist/core/qualityScorecard.d.ts +6 -0
- package/dist/core/qualityScorecard.js +220 -0
- package/dist/core/qualityScorecard.js.map +1 -0
- package/dist/core/regressionPlan.d.ts +7 -0
- package/dist/core/regressionPlan.js +226 -0
- package/dist/core/regressionPlan.js.map +1 -0
- package/dist/core/releaseEvidence.d.ts +7 -0
- package/dist/core/releaseEvidence.js +174 -0
- package/dist/core/releaseEvidence.js.map +1 -0
- package/dist/core/releaseTrain.d.ts +5 -0
- package/dist/core/releaseTrain.js +348 -0
- package/dist/core/releaseTrain.js.map +1 -0
- package/dist/core/workplan.d.ts +12 -0
- package/dist/core/workplan.js +440 -0
- package/dist/core/workplan.js.map +1 -0
- package/dist/index.d.ts +8 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp/tools/agentBrief.d.ts +2 -0
- package/dist/mcp/tools/agentBrief.js +39 -0
- package/dist/mcp/tools/agentBrief.js.map +1 -0
- package/dist/mcp/tools/bugHunt.d.ts +2 -0
- package/dist/mcp/tools/bugHunt.js +31 -0
- package/dist/mcp/tools/bugHunt.js.map +1 -0
- package/dist/mcp/tools/evidencePack.d.ts +2 -0
- package/dist/mcp/tools/evidencePack.js +39 -0
- package/dist/mcp/tools/evidencePack.js.map +1 -0
- package/dist/mcp/tools/qualityScorecard.d.ts +2 -0
- package/dist/mcp/tools/qualityScorecard.js +26 -0
- package/dist/mcp/tools/qualityScorecard.js.map +1 -0
- package/dist/mcp/tools/regressionPlan.d.ts +2 -0
- package/dist/mcp/tools/regressionPlan.js +47 -0
- package/dist/mcp/tools/regressionPlan.js.map +1 -0
- package/dist/mcp/tools/releaseTrain.d.ts +2 -0
- package/dist/mcp/tools/releaseTrain.js +27 -0
- package/dist/mcp/tools/releaseTrain.js.map +1 -0
- package/dist/mcp/tools/workplan.d.ts +2 -0
- package/dist/mcp/tools/workplan.js +70 -0
- package/dist/mcp/tools/workplan.js.map +1 -0
- package/dist/mcp/tools.js +14 -0
- package/dist/mcp/tools.js.map +1 -1
- package/dist/projscan-sbom.cdx.json +6 -6
- package/dist/tool-manifest.json +196 -3
- package/dist/types.d.ts +240 -0
- package/dist/utils/formatSupport.d.ts +8 -0
- package/dist/utils/formatSupport.js +8 -0
- package/dist/utils/formatSupport.js.map +1 -1
- package/package.json +4 -4
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { computeEvidencePack } from '../../core/releaseEvidence.js';
|
|
2
|
+
export const evidencePackTool = {
|
|
3
|
+
name: 'projscan_evidence_pack',
|
|
4
|
+
description: 'Assemble one approval packet from product planning, bug-hunt, workplan, and preflight evidence.',
|
|
5
|
+
inputSchema: {
|
|
6
|
+
type: 'object',
|
|
7
|
+
properties: {
|
|
8
|
+
lines: {
|
|
9
|
+
type: 'array',
|
|
10
|
+
items: { type: 'string' },
|
|
11
|
+
description: 'Product lines to include. Default: next six minor lines.',
|
|
12
|
+
},
|
|
13
|
+
website_prompt: {
|
|
14
|
+
type: 'boolean',
|
|
15
|
+
description: 'Include website-update prompt text in the response.',
|
|
16
|
+
},
|
|
17
|
+
max_findings: {
|
|
18
|
+
type: 'number',
|
|
19
|
+
description: 'Maximum bug-hunt findings to include. Default: 10, max: 25.',
|
|
20
|
+
},
|
|
21
|
+
max_tokens: {
|
|
22
|
+
type: 'number',
|
|
23
|
+
description: 'Cap the response to roughly this many tokens.',
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
handler: async (args, rootPath) => ({
|
|
28
|
+
evidencePack: await computeEvidencePack(rootPath, {
|
|
29
|
+
lines: Array.isArray(args.lines)
|
|
30
|
+
? args.lines.filter((line) => typeof line === 'string')
|
|
31
|
+
: undefined,
|
|
32
|
+
includeWebsitePrompt: args.website_prompt === true,
|
|
33
|
+
maxFindings: typeof args.max_findings === 'number' && Number.isFinite(args.max_findings)
|
|
34
|
+
? args.max_findings
|
|
35
|
+
: undefined,
|
|
36
|
+
}),
|
|
37
|
+
}),
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=evidencePack.js.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { computeQualityScorecard } from '../../core/qualityScorecard.js';
|
|
2
|
+
export const qualityScorecardTool = {
|
|
3
|
+
name: 'projscan_quality_scorecard',
|
|
4
|
+
description: 'Summarize quality dimensions, top risks, verification commands, and suggested next actions for agents and reviewers.',
|
|
5
|
+
inputSchema: {
|
|
6
|
+
type: 'object',
|
|
7
|
+
properties: {
|
|
8
|
+
max_risks: {
|
|
9
|
+
type: 'number',
|
|
10
|
+
description: 'Maximum top risks to return. Default: 8, max: 25.',
|
|
11
|
+
},
|
|
12
|
+
max_tokens: {
|
|
13
|
+
type: 'number',
|
|
14
|
+
description: 'Cap the response to roughly this many tokens.',
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
handler: async (args, rootPath) => ({
|
|
19
|
+
qualityScorecard: await computeQualityScorecard(rootPath, {
|
|
20
|
+
maxRisks: typeof args.max_risks === 'number' && Number.isFinite(args.max_risks)
|
|
21
|
+
? args.max_risks
|
|
22
|
+
: undefined,
|
|
23
|
+
}),
|
|
24
|
+
}),
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=qualityScorecard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"qualityScorecard.js","sourceRoot":"","sources":["../../../src/mcp/tools/qualityScorecard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAGzE,MAAM,CAAC,MAAM,oBAAoB,GAAY;IAC3C,IAAI,EAAE,4BAA4B;IAClC,WAAW,EACT,sHAAsH;IACxH,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,SAAS,EAAE;gBACT,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,mDAAmD;aACjE;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,gBAAgB,EAAE,MAAM,uBAAuB,CAAC,QAAQ,EAAE;YACxD,QAAQ,EACN,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;gBACnE,CAAC,CAAC,IAAI,CAAC,SAAS;gBAChB,CAAC,CAAC,SAAS;SAChB,CAAC;KACH,CAAC;CACH,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { computeRegressionPlan } from '../../core/regressionPlan.js';
|
|
2
|
+
const LEVELS = ['smoke', 'focused', 'full'];
|
|
3
|
+
export const regressionPlanTool = {
|
|
4
|
+
name: 'projscan_regression_plan',
|
|
5
|
+
description: 'Build a smoke, focused, or full regression matrix from bug-hunt, preflight, and product risk signals.',
|
|
6
|
+
inputSchema: {
|
|
7
|
+
type: 'object',
|
|
8
|
+
properties: {
|
|
9
|
+
level: {
|
|
10
|
+
type: 'string',
|
|
11
|
+
enum: LEVELS,
|
|
12
|
+
description: 'Regression depth. Default: focused.',
|
|
13
|
+
},
|
|
14
|
+
lines: {
|
|
15
|
+
type: 'array',
|
|
16
|
+
items: { type: 'string' },
|
|
17
|
+
description: 'Product lines to include. Default: next six minor lines.',
|
|
18
|
+
},
|
|
19
|
+
max_targets: {
|
|
20
|
+
type: 'number',
|
|
21
|
+
description: 'Maximum regression targets to include. Default: 8, max: 25.',
|
|
22
|
+
},
|
|
23
|
+
max_tokens: {
|
|
24
|
+
type: 'number',
|
|
25
|
+
description: 'Cap the response to roughly this many tokens.',
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
handler: async (args, rootPath) => ({
|
|
30
|
+
regressionPlan: await computeRegressionPlan(rootPath, {
|
|
31
|
+
level: readLevel(args.level),
|
|
32
|
+
lines: Array.isArray(args.lines)
|
|
33
|
+
? args.lines.filter((line) => typeof line === 'string')
|
|
34
|
+
: undefined,
|
|
35
|
+
maxTargets: typeof args.max_targets === 'number' && Number.isFinite(args.max_targets)
|
|
36
|
+
? args.max_targets
|
|
37
|
+
: undefined,
|
|
38
|
+
}),
|
|
39
|
+
}),
|
|
40
|
+
};
|
|
41
|
+
function readLevel(value) {
|
|
42
|
+
if (typeof value === 'string' && LEVELS.includes(value)) {
|
|
43
|
+
return value;
|
|
44
|
+
}
|
|
45
|
+
return undefined;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=regressionPlan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"regressionPlan.js","sourceRoot":"","sources":["../../../src/mcp/tools/regressionPlan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAIrE,MAAM,MAAM,GAAmC,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AAE5E,MAAM,CAAC,MAAM,kBAAkB,GAAY;IACzC,IAAI,EAAE,0BAA0B;IAChC,WAAW,EACT,uGAAuG;IACzG,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,MAAM;gBACZ,WAAW,EAAE,qCAAqC;aACnD;YACD,KAAK,EAAE;gBACL,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACzB,WAAW,EAAE,0DAA0D;aACxE;YACD,WAAW,EAAE;gBACX,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,cAAc,EAAE,MAAM,qBAAqB,CAAC,QAAQ,EAAE;YACpD,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;YAC5B,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,UAAU,EACR,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC;gBACvE,CAAC,CAAC,IAAI,CAAC,WAAW;gBAClB,CAAC,CAAC,SAAS;SAChB,CAAC;KACH,CAAC;CACH,CAAC;AAEF,SAAS,SAAS,CAAC,KAAc;IAC/B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAK,MAA4B,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/E,OAAO,KAA4B,CAAC;IACtC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { computeReleaseTrain } from '../../core/releaseTrain.js';
|
|
2
|
+
export const releaseTrainTool = {
|
|
3
|
+
name: 'projscan_release_train',
|
|
4
|
+
description: 'Plan upcoming product lines with version, scope, readiness, and next-action evidence.',
|
|
5
|
+
inputSchema: {
|
|
6
|
+
type: 'object',
|
|
7
|
+
properties: {
|
|
8
|
+
lines: {
|
|
9
|
+
type: 'array',
|
|
10
|
+
items: { type: 'string' },
|
|
11
|
+
description: 'Product lines to include. Default: next six minor lines.',
|
|
12
|
+
},
|
|
13
|
+
max_tokens: {
|
|
14
|
+
type: 'number',
|
|
15
|
+
description: 'Cap the response to roughly this many tokens.',
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
handler: async (args, rootPath) => ({
|
|
20
|
+
releaseTrain: await computeReleaseTrain(rootPath, {
|
|
21
|
+
lines: Array.isArray(args.lines)
|
|
22
|
+
? args.lines.filter((line) => typeof line === 'string')
|
|
23
|
+
: undefined,
|
|
24
|
+
}),
|
|
25
|
+
}),
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=releaseTrain.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"releaseTrain.js","sourceRoot":"","sources":["../../../src/mcp/tools/releaseTrain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAGjE,MAAM,CAAC,MAAM,gBAAgB,GAAY;IACvC,IAAI,EAAE,wBAAwB;IAC9B,WAAW,EACT,uFAAuF;IACzF,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,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;SACd,CAAC;KACH,CAAC;CACH,CAAC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { computeWorkplan, isWorkplanMode } from '../../core/workplan.js';
|
|
2
|
+
const WORKPLAN_MODES = [
|
|
3
|
+
'before_edit',
|
|
4
|
+
'before_commit',
|
|
5
|
+
'before_merge',
|
|
6
|
+
'refactor',
|
|
7
|
+
'release',
|
|
8
|
+
'bug_hunt',
|
|
9
|
+
'hardening',
|
|
10
|
+
];
|
|
11
|
+
export const workplanTool = {
|
|
12
|
+
name: 'projscan_workplan',
|
|
13
|
+
description: 'Compose preflight, review, session, hotspot, plugin, and supply-chain signals into an ordered agent execution plan with evidence, suggested tools, verification commands, and handoff text.',
|
|
14
|
+
inputSchema: {
|
|
15
|
+
type: 'object',
|
|
16
|
+
properties: {
|
|
17
|
+
mode: {
|
|
18
|
+
type: 'string',
|
|
19
|
+
enum: WORKPLAN_MODES,
|
|
20
|
+
description: 'Planning mode. before_edit/before_commit/before_merge mirror preflight gates; refactor, release, bug_hunt, and hardening add mode-specific task recipes. Default: before_edit.',
|
|
21
|
+
},
|
|
22
|
+
base_ref: {
|
|
23
|
+
type: 'string',
|
|
24
|
+
description: 'Optional git base ref for commit/merge/release checks.',
|
|
25
|
+
},
|
|
26
|
+
head_ref: {
|
|
27
|
+
type: 'string',
|
|
28
|
+
description: 'Optional git head ref for merge/release checks.',
|
|
29
|
+
},
|
|
30
|
+
max_changed_files: {
|
|
31
|
+
type: 'number',
|
|
32
|
+
description: 'Optional caution threshold for changed-file count. Default: 50.',
|
|
33
|
+
},
|
|
34
|
+
max_tasks: {
|
|
35
|
+
type: 'number',
|
|
36
|
+
description: 'Maximum number of workplan tasks to return. Default: 8, max: 20.',
|
|
37
|
+
},
|
|
38
|
+
enable_plugins: {
|
|
39
|
+
type: 'boolean',
|
|
40
|
+
description: 'Enable local analyzer plugins for this run, equivalent to PROJSCAN_PLUGINS_PREVIEW=1.',
|
|
41
|
+
},
|
|
42
|
+
max_tokens: {
|
|
43
|
+
type: 'number',
|
|
44
|
+
description: 'Cap the response to roughly this many tokens.',
|
|
45
|
+
},
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
handler: async (args, rootPath) => {
|
|
49
|
+
return {
|
|
50
|
+
workplan: await computeWorkplan(rootPath, {
|
|
51
|
+
mode: readMode(args.mode),
|
|
52
|
+
baseRef: typeof args.base_ref === 'string' ? args.base_ref : undefined,
|
|
53
|
+
headRef: typeof args.head_ref === 'string' ? args.head_ref : undefined,
|
|
54
|
+
maxChangedFiles: typeof args.max_changed_files === 'number' && Number.isFinite(args.max_changed_files)
|
|
55
|
+
? args.max_changed_files
|
|
56
|
+
: undefined,
|
|
57
|
+
maxTasks: typeof args.max_tasks === 'number' && Number.isFinite(args.max_tasks)
|
|
58
|
+
? args.max_tasks
|
|
59
|
+
: undefined,
|
|
60
|
+
enablePlugins: args.enable_plugins === true,
|
|
61
|
+
}),
|
|
62
|
+
};
|
|
63
|
+
},
|
|
64
|
+
};
|
|
65
|
+
function readMode(value) {
|
|
66
|
+
if (typeof value === 'string' && isWorkplanMode(value))
|
|
67
|
+
return value;
|
|
68
|
+
return 'before_edit';
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=workplan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workplan.js","sourceRoot":"","sources":["../../../src/mcp/tools/workplan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAIzE,MAAM,cAAc,GAA4B;IAC9C,aAAa;IACb,eAAe;IACf,cAAc;IACd,UAAU;IACV,SAAS;IACT,UAAU;IACV,WAAW;CACZ,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAY;IACnC,IAAI,EAAE,mBAAmB;IACzB,WAAW,EACT,6LAA6L;IAC/L,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,cAAc;gBACpB,WAAW,EACT,gLAAgL;aACnL;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,wDAAwD;aACtE;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,iDAAiD;aAC/D;YACD,iBAAiB,EAAE;gBACjB,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,iEAAiE;aAC/E;YACD,SAAS,EAAE;gBACT,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,kEAAkE;aAChF;YACD,cAAc,EAAE;gBACd,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,uFAAuF;aACrG;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,OAAO;YACL,QAAQ,EAAE,MAAM,eAAe,CAAC,QAAQ,EAAE;gBACxC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;gBACzB,OAAO,EAAE,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;gBACtE,OAAO,EAAE,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;gBACtE,eAAe,EACb,OAAO,IAAI,CAAC,iBAAiB,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC;oBACnF,CAAC,CAAC,IAAI,CAAC,iBAAiB;oBACxB,CAAC,CAAC,SAAS;gBACf,QAAQ,EACN,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;oBACnE,CAAC,CAAC,IAAI,CAAC,SAAS;oBAChB,CAAC,CAAC,SAAS;gBACf,aAAa,EAAE,IAAI,CAAC,cAAc,KAAK,IAAI;aAC5C,CAAC;SACH,CAAC;IACJ,CAAC;CACF,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"}
|
package/dist/mcp/tools.js
CHANGED
|
@@ -37,6 +37,13 @@ import { costSummaryTool } from './tools/costSummary.js';
|
|
|
37
37
|
import { reviewWatchTool } from './tools/reviewWatch.js';
|
|
38
38
|
import { pluginTool } from './tools/plugin.js';
|
|
39
39
|
import { preflightTool } from './tools/preflight.js';
|
|
40
|
+
import { workplanTool } from './tools/workplan.js';
|
|
41
|
+
import { releaseTrainTool } from './tools/releaseTrain.js';
|
|
42
|
+
import { bugHuntTool } from './tools/bugHunt.js';
|
|
43
|
+
import { evidencePackTool } from './tools/evidencePack.js';
|
|
44
|
+
import { regressionPlanTool } from './tools/regressionPlan.js';
|
|
45
|
+
import { agentBriefTool } from './tools/agentBrief.js';
|
|
46
|
+
import { qualityScorecardTool } from './tools/qualityScorecard.js';
|
|
40
47
|
const tools = [
|
|
41
48
|
analyzeTool,
|
|
42
49
|
doctorTool,
|
|
@@ -67,6 +74,13 @@ const tools = [
|
|
|
67
74
|
reviewWatchTool,
|
|
68
75
|
pluginTool,
|
|
69
76
|
preflightTool,
|
|
77
|
+
workplanTool,
|
|
78
|
+
releaseTrainTool,
|
|
79
|
+
bugHuntTool,
|
|
80
|
+
evidencePackTool,
|
|
81
|
+
regressionPlanTool,
|
|
82
|
+
agentBriefTool,
|
|
83
|
+
qualityScorecardTool,
|
|
70
84
|
];
|
|
71
85
|
export function getToolDefinitions() {
|
|
72
86
|
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,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,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;
|
|
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,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,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;AAMnE,MAAM,KAAK,GAAc;IACvB,WAAW;IACX,UAAU;IACV,YAAY;IACZ,WAAW;IACX,QAAQ;IACR,aAAa;IACb,gBAAgB;IAChB,YAAY;IACZ,SAAS;IACT,WAAW;IACX,YAAY;IACZ,SAAS;IACT,YAAY;IACZ,cAAc;IACd,UAAU;IACV,UAAU;IACV,cAAc;IACd,gBAAgB;IAChB,UAAU;IACV,UAAU;IACV,WAAW;IACX,UAAU;IACV,kBAAkB;IAClB,YAAY;IACZ,SAAS;IACT,eAAe;IACf,eAAe;IACf,UAAU;IACV,aAAa;IACb,YAAY;IACZ,gBAAgB;IAChB,WAAW;IACX,gBAAgB;IAChB,kBAAkB;IAClB,cAAc;IACd,oBAAoB;CACrB,CAAC;AAEF,MAAM,UAAU,kBAAkB;IAChC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;AACjG,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,OAAO,CAAC;AACrD,CAAC"}
|
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
{
|
|
2
2
|
"bomFormat": "CycloneDX",
|
|
3
3
|
"specVersion": "1.5",
|
|
4
|
-
"serialNumber": "urn:uuid:
|
|
4
|
+
"serialNumber": "urn:uuid:4c7f57bc-92f0-44eb-8893-9b1e8d1f5cf1",
|
|
5
5
|
"version": 1,
|
|
6
6
|
"metadata": {
|
|
7
|
-
"timestamp": "2026-05-
|
|
7
|
+
"timestamp": "2026-05-22T13:11:13.488Z",
|
|
8
8
|
"tools": [
|
|
9
9
|
{
|
|
10
10
|
"vendor": "projscan",
|
|
11
11
|
"name": "projscan-sbom-generator",
|
|
12
|
-
"version": "2.
|
|
12
|
+
"version": "2.8.0"
|
|
13
13
|
}
|
|
14
14
|
],
|
|
15
15
|
"component": {
|
|
16
16
|
"type": "application",
|
|
17
|
-
"bom-ref": "pkg:npm/projscan@2.
|
|
17
|
+
"bom-ref": "pkg:npm/projscan@2.8.0",
|
|
18
18
|
"name": "projscan",
|
|
19
|
-
"version": "2.
|
|
20
|
-
"purl": "pkg:npm/projscan@2.
|
|
19
|
+
"version": "2.8.0",
|
|
20
|
+
"purl": "pkg:npm/projscan@2.8.0"
|
|
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": "2.
|
|
3
|
+
"version": "2.8.0",
|
|
4
4
|
"mcpProtocolVersion": "2025-03-26",
|
|
5
|
-
"generatedAt": "2026-05-
|
|
6
|
-
"toolCount":
|
|
5
|
+
"generatedAt": "2026-05-22T13:11:18.243Z",
|
|
6
|
+
"toolCount": 36,
|
|
7
7
|
"tools": [
|
|
8
8
|
{
|
|
9
9
|
"name": "projscan_analyze",
|
|
@@ -762,6 +762,199 @@
|
|
|
762
762
|
}
|
|
763
763
|
}
|
|
764
764
|
}
|
|
765
|
+
},
|
|
766
|
+
{
|
|
767
|
+
"name": "projscan_workplan",
|
|
768
|
+
"description": "Compose preflight, review, session, hotspot, plugin, and supply-chain signals into an ordered agent execution plan with evidence, suggested tools, verification commands, and handoff text.",
|
|
769
|
+
"inputSchema": {
|
|
770
|
+
"type": "object",
|
|
771
|
+
"properties": {
|
|
772
|
+
"mode": {
|
|
773
|
+
"type": "string",
|
|
774
|
+
"enum": [
|
|
775
|
+
"before_edit",
|
|
776
|
+
"before_commit",
|
|
777
|
+
"before_merge",
|
|
778
|
+
"refactor",
|
|
779
|
+
"release",
|
|
780
|
+
"bug_hunt",
|
|
781
|
+
"hardening"
|
|
782
|
+
],
|
|
783
|
+
"description": "Planning mode. before_edit/before_commit/before_merge mirror preflight gates; refactor, release, bug_hunt, and hardening add mode-specific task recipes. Default: before_edit."
|
|
784
|
+
},
|
|
785
|
+
"base_ref": {
|
|
786
|
+
"type": "string",
|
|
787
|
+
"description": "Optional git base ref for commit/merge/release checks."
|
|
788
|
+
},
|
|
789
|
+
"head_ref": {
|
|
790
|
+
"type": "string",
|
|
791
|
+
"description": "Optional git head ref for merge/release checks."
|
|
792
|
+
},
|
|
793
|
+
"max_changed_files": {
|
|
794
|
+
"type": "number",
|
|
795
|
+
"description": "Optional caution threshold for changed-file count. Default: 50."
|
|
796
|
+
},
|
|
797
|
+
"max_tasks": {
|
|
798
|
+
"type": "number",
|
|
799
|
+
"description": "Maximum number of workplan tasks to return. Default: 8, max: 20."
|
|
800
|
+
},
|
|
801
|
+
"enable_plugins": {
|
|
802
|
+
"type": "boolean",
|
|
803
|
+
"description": "Enable local analyzer plugins for this run, equivalent to PROJSCAN_PLUGINS_PREVIEW=1."
|
|
804
|
+
},
|
|
805
|
+
"max_tokens": {
|
|
806
|
+
"type": "number",
|
|
807
|
+
"description": "Cap the response to roughly this many tokens."
|
|
808
|
+
}
|
|
809
|
+
}
|
|
810
|
+
}
|
|
811
|
+
},
|
|
812
|
+
{
|
|
813
|
+
"name": "projscan_release_train",
|
|
814
|
+
"description": "Plan upcoming product lines with version, scope, readiness, and next-action evidence.",
|
|
815
|
+
"inputSchema": {
|
|
816
|
+
"type": "object",
|
|
817
|
+
"properties": {
|
|
818
|
+
"lines": {
|
|
819
|
+
"type": "array",
|
|
820
|
+
"items": {
|
|
821
|
+
"type": "string"
|
|
822
|
+
},
|
|
823
|
+
"description": "Product lines to include. Default: next six minor lines."
|
|
824
|
+
},
|
|
825
|
+
"max_tokens": {
|
|
826
|
+
"type": "number",
|
|
827
|
+
"description": "Cap the response to roughly this many tokens."
|
|
828
|
+
}
|
|
829
|
+
}
|
|
830
|
+
}
|
|
831
|
+
},
|
|
832
|
+
{
|
|
833
|
+
"name": "projscan_bug_hunt",
|
|
834
|
+
"description": "Run an agent-ready bug hunt. Combines doctor issues, preflight verdict, hotspots, and session coordination into a prioritized fix queue with verification commands.",
|
|
835
|
+
"inputSchema": {
|
|
836
|
+
"type": "object",
|
|
837
|
+
"properties": {
|
|
838
|
+
"max_findings": {
|
|
839
|
+
"type": "number",
|
|
840
|
+
"description": "Maximum number of fix-queue findings to return. Default: 10, max: 25."
|
|
841
|
+
},
|
|
842
|
+
"since": {
|
|
843
|
+
"type": "string",
|
|
844
|
+
"description": "Git history window for hotspot evidence. Examples: \"6 months ago\", \"2024-01-01\"."
|
|
845
|
+
},
|
|
846
|
+
"max_tokens": {
|
|
847
|
+
"type": "number",
|
|
848
|
+
"description": "Cap the response to roughly this many tokens."
|
|
849
|
+
}
|
|
850
|
+
}
|
|
851
|
+
}
|
|
852
|
+
},
|
|
853
|
+
{
|
|
854
|
+
"name": "projscan_evidence_pack",
|
|
855
|
+
"description": "Assemble one approval packet from product planning, bug-hunt, workplan, and preflight evidence.",
|
|
856
|
+
"inputSchema": {
|
|
857
|
+
"type": "object",
|
|
858
|
+
"properties": {
|
|
859
|
+
"lines": {
|
|
860
|
+
"type": "array",
|
|
861
|
+
"items": {
|
|
862
|
+
"type": "string"
|
|
863
|
+
},
|
|
864
|
+
"description": "Product lines to include. Default: next six minor lines."
|
|
865
|
+
},
|
|
866
|
+
"website_prompt": {
|
|
867
|
+
"type": "boolean",
|
|
868
|
+
"description": "Include website-update prompt text in the response."
|
|
869
|
+
},
|
|
870
|
+
"max_findings": {
|
|
871
|
+
"type": "number",
|
|
872
|
+
"description": "Maximum bug-hunt findings to include. Default: 10, max: 25."
|
|
873
|
+
},
|
|
874
|
+
"max_tokens": {
|
|
875
|
+
"type": "number",
|
|
876
|
+
"description": "Cap the response to roughly this many tokens."
|
|
877
|
+
}
|
|
878
|
+
}
|
|
879
|
+
}
|
|
880
|
+
},
|
|
881
|
+
{
|
|
882
|
+
"name": "projscan_regression_plan",
|
|
883
|
+
"description": "Build a smoke, focused, or full regression matrix from bug-hunt, preflight, and product risk signals.",
|
|
884
|
+
"inputSchema": {
|
|
885
|
+
"type": "object",
|
|
886
|
+
"properties": {
|
|
887
|
+
"level": {
|
|
888
|
+
"type": "string",
|
|
889
|
+
"enum": [
|
|
890
|
+
"smoke",
|
|
891
|
+
"focused",
|
|
892
|
+
"full"
|
|
893
|
+
],
|
|
894
|
+
"description": "Regression depth. Default: focused."
|
|
895
|
+
},
|
|
896
|
+
"lines": {
|
|
897
|
+
"type": "array",
|
|
898
|
+
"items": {
|
|
899
|
+
"type": "string"
|
|
900
|
+
},
|
|
901
|
+
"description": "Product lines to include. Default: next six minor lines."
|
|
902
|
+
},
|
|
903
|
+
"max_targets": {
|
|
904
|
+
"type": "number",
|
|
905
|
+
"description": "Maximum regression targets to include. Default: 8, max: 25."
|
|
906
|
+
},
|
|
907
|
+
"max_tokens": {
|
|
908
|
+
"type": "number",
|
|
909
|
+
"description": "Cap the response to roughly this many tokens."
|
|
910
|
+
}
|
|
911
|
+
}
|
|
912
|
+
}
|
|
913
|
+
},
|
|
914
|
+
{
|
|
915
|
+
"name": "projscan_agent_brief",
|
|
916
|
+
"description": "Create a compact next-agent context packet with prioritized focus items, repo context, guardrails, and suggested next actions.",
|
|
917
|
+
"inputSchema": {
|
|
918
|
+
"type": "object",
|
|
919
|
+
"properties": {
|
|
920
|
+
"intent": {
|
|
921
|
+
"type": "string",
|
|
922
|
+
"enum": [
|
|
923
|
+
"next_agent",
|
|
924
|
+
"bug_hunt",
|
|
925
|
+
"release",
|
|
926
|
+
"refactor",
|
|
927
|
+
"hardening"
|
|
928
|
+
],
|
|
929
|
+
"description": "Brief intent. Default: next_agent."
|
|
930
|
+
},
|
|
931
|
+
"max_items": {
|
|
932
|
+
"type": "number",
|
|
933
|
+
"description": "Maximum focus items to return. Default: 6, max: 20."
|
|
934
|
+
},
|
|
935
|
+
"max_tokens": {
|
|
936
|
+
"type": "number",
|
|
937
|
+
"description": "Cap the response to roughly this many tokens."
|
|
938
|
+
}
|
|
939
|
+
}
|
|
940
|
+
}
|
|
941
|
+
},
|
|
942
|
+
{
|
|
943
|
+
"name": "projscan_quality_scorecard",
|
|
944
|
+
"description": "Summarize quality dimensions, top risks, verification commands, and suggested next actions for agents and reviewers.",
|
|
945
|
+
"inputSchema": {
|
|
946
|
+
"type": "object",
|
|
947
|
+
"properties": {
|
|
948
|
+
"max_risks": {
|
|
949
|
+
"type": "number",
|
|
950
|
+
"description": "Maximum top risks to return. Default: 8, max: 25."
|
|
951
|
+
},
|
|
952
|
+
"max_tokens": {
|
|
953
|
+
"type": "number",
|
|
954
|
+
"description": "Cap the response to roughly this many tokens."
|
|
955
|
+
}
|
|
956
|
+
}
|
|
957
|
+
}
|
|
765
958
|
}
|
|
766
959
|
]
|
|
767
960
|
}
|