@planu/cli 0.92.0 → 0.93.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/dist/engine/telemetry/error-reporter.d.ts +6 -0
- package/dist/engine/telemetry/error-reporter.d.ts.map +1 -1
- package/dist/engine/telemetry/error-reporter.js +22 -0
- package/dist/engine/telemetry/error-reporter.js.map +1 -1
- package/dist/tools/audit-trail-handler.d.ts +6 -2
- package/dist/tools/audit-trail-handler.d.ts.map +1 -1
- package/dist/tools/audit-trail-handler.js +12 -9
- package/dist/tools/audit-trail-handler.js.map +1 -1
- package/dist/tools/check-readiness.d.ts +3 -1
- package/dist/tools/check-readiness.d.ts.map +1 -1
- package/dist/tools/check-readiness.js +9 -1
- package/dist/tools/check-readiness.js.map +1 -1
- package/dist/tools/data-governance.d.ts +3 -1
- package/dist/tools/data-governance.d.ts.map +1 -1
- package/dist/tools/data-governance.js +9 -1
- package/dist/tools/data-governance.js.map +1 -1
- package/dist/tools/register-audit-trail-tools.d.ts.map +1 -1
- package/dist/tools/register-audit-trail-tools.js +27 -4
- package/dist/tools/register-audit-trail-tools.js.map +1 -1
- package/dist/tools/register-backlog-tools.d.ts.map +1 -1
- package/dist/tools/register-backlog-tools.js +24 -8
- package/dist/tools/register-backlog-tools.js.map +1 -1
- package/dist/tools/register-ci-tools.d.ts.map +1 -1
- package/dist/tools/register-ci-tools.js +27 -5
- package/dist/tools/register-ci-tools.js.map +1 -1
- package/dist/tools/register-coverage-tools.d.ts.map +1 -1
- package/dist/tools/register-coverage-tools.js +14 -2
- package/dist/tools/register-coverage-tools.js.map +1 -1
- package/dist/tools/register-domain-criteria-tools.d.ts.map +1 -1
- package/dist/tools/register-domain-criteria-tools.js +27 -4
- package/dist/tools/register-domain-criteria-tools.js.map +1 -1
- package/dist/tools/register-elicitation-tools.d.ts.map +1 -1
- package/dist/tools/register-elicitation-tools.js +14 -2
- package/dist/tools/register-elicitation-tools.js.map +1 -1
- package/dist/tools/register-event-tools.d.ts.map +1 -1
- package/dist/tools/register-event-tools.js +14 -2
- package/dist/tools/register-event-tools.js.map +1 -1
- package/dist/tools/register-federation-tools.d.ts.map +1 -1
- package/dist/tools/register-federation-tools.js +27 -4
- package/dist/tools/register-federation-tools.js.map +1 -1
- package/dist/tools/register-governance-tools.d.ts.map +1 -1
- package/dist/tools/register-governance-tools.js +27 -4
- package/dist/tools/register-governance-tools.js.map +1 -1
- package/dist/tools/register-hooks-tools.d.ts.map +1 -1
- package/dist/tools/register-hooks-tools.js +14 -2
- package/dist/tools/register-hooks-tools.js.map +1 -1
- package/dist/tools/register-infrastructure-tools.d.ts.map +1 -1
- package/dist/tools/register-infrastructure-tools.js +17 -2
- package/dist/tools/register-infrastructure-tools.js.map +1 -1
- package/dist/tools/register-lessons-tools.d.ts.map +1 -1
- package/dist/tools/register-lessons-tools.js +12 -4
- package/dist/tools/register-lessons-tools.js.map +1 -1
- package/dist/tools/register-living-spec-advanced-tools.d.ts.map +1 -1
- package/dist/tools/register-living-spec-advanced-tools.js +92 -16
- package/dist/tools/register-living-spec-advanced-tools.js.map +1 -1
- package/dist/tools/register-living-spec-tools.d.ts.map +1 -1
- package/dist/tools/register-living-spec-tools.js +53 -10
- package/dist/tools/register-living-spec-tools.js.map +1 -1
- package/dist/tools/register-migration-tools.d.ts.map +1 -1
- package/dist/tools/register-migration-tools.js +10 -3
- package/dist/tools/register-migration-tools.js.map +1 -1
- package/dist/tools/register-readiness-tools.d.ts.map +1 -1
- package/dist/tools/register-readiness-tools.js +27 -4
- package/dist/tools/register-readiness-tools.js.map +1 -1
- package/dist/tools/register-scan-tools.js +1 -1
- package/dist/tools/register-scan-tools.js.map +1 -1
- package/dist/tools/register-scope-tools.d.ts.map +1 -1
- package/dist/tools/register-scope-tools.js +27 -4
- package/dist/tools/register-scope-tools.js.map +1 -1
- package/dist/tools/register-search-tools.d.ts.map +1 -1
- package/dist/tools/register-search-tools.js +14 -2
- package/dist/tools/register-search-tools.js.map +1 -1
- package/dist/tools/register-security-tools.d.ts.map +1 -1
- package/dist/tools/register-security-tools.js +14 -2
- package/dist/tools/register-security-tools.js.map +1 -1
- package/dist/tools/register-spec-observability-tools.d.ts.map +1 -1
- package/dist/tools/register-spec-observability-tools.js +14 -2
- package/dist/tools/register-spec-observability-tools.js.map +1 -1
- package/dist/tools/register-spec-split-tools.d.ts.map +1 -1
- package/dist/tools/register-spec-split-tools.js +26 -6
- package/dist/tools/register-spec-split-tools.js.map +1 -1
- package/dist/tools/register-stack-tools.d.ts.map +1 -1
- package/dist/tools/register-stack-tools.js +40 -9
- package/dist/tools/register-stack-tools.js.map +1 -1
- package/dist/tools/register-team-tools.d.ts.map +1 -1
- package/dist/tools/register-team-tools.js +38 -6
- package/dist/tools/register-team-tools.js.map +1 -1
- package/dist/tools/register-telemetry-tools.d.ts.map +1 -1
- package/dist/tools/register-telemetry-tools.js +6 -1
- package/dist/tools/register-telemetry-tools.js.map +1 -1
- package/dist/tools/register-versioning-tools.d.ts.map +1 -1
- package/dist/tools/register-versioning-tools.js +66 -13
- package/dist/tools/register-versioning-tools.js.map +1 -1
- package/dist/tools/resolve-project-id.d.ts +13 -0
- package/dist/tools/resolve-project-id.d.ts.map +1 -0
- package/dist/tools/resolve-project-id.js +22 -0
- package/dist/tools/resolve-project-id.js.map +1 -0
- package/dist/tools/safe-handler.d.ts.map +1 -1
- package/dist/tools/safe-handler.js +7 -2
- package/dist/tools/safe-handler.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-security-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-security-tools.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"register-security-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-security-tools.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAsC7D"}
|
|
@@ -4,6 +4,7 @@ import { z } from 'zod';
|
|
|
4
4
|
import { t } from '../i18n/index.js';
|
|
5
5
|
import { handleSecurityCheck } from './security-check.js';
|
|
6
6
|
import { safeLicensed } from './safe-handler.js';
|
|
7
|
+
import { resolveProjectId, missingProjectIdError } from './resolve-project-id.js';
|
|
7
8
|
export function registerSecurityTools(server) {
|
|
8
9
|
// security_check — SPEC-029
|
|
9
10
|
server.registerTool('security_check', {
|
|
@@ -11,7 +12,12 @@ export function registerSecurityTools(server) {
|
|
|
11
12
|
annotations: { readOnlyHint: true },
|
|
12
13
|
inputSchema: {
|
|
13
14
|
specId: z.string().max(500).describe('Spec ID to analyze'),
|
|
14
|
-
projectId: z.string().max(500).describe('Project ID'),
|
|
15
|
+
projectId: z.string().max(500).optional().describe('Project ID hash. Prefer projectPath.'),
|
|
16
|
+
projectPath: z
|
|
17
|
+
.string()
|
|
18
|
+
.max(4096)
|
|
19
|
+
.optional()
|
|
20
|
+
.describe('Absolute path to project root. Derives projectId automatically.'),
|
|
15
21
|
subcommand: z
|
|
16
22
|
.enum(['analyze', 'score', 'drift'])
|
|
17
23
|
.optional()
|
|
@@ -22,6 +28,12 @@ export function registerSecurityTools(server) {
|
|
|
22
28
|
.optional()
|
|
23
29
|
.describe('Absolute paths to code files to scan for insecure patterns'),
|
|
24
30
|
},
|
|
25
|
-
}, safeLicensed('security_check', async (args) =>
|
|
31
|
+
}, safeLicensed('security_check', async (args) => {
|
|
32
|
+
const pid = resolveProjectId(args);
|
|
33
|
+
if (!pid) {
|
|
34
|
+
return missingProjectIdError;
|
|
35
|
+
}
|
|
36
|
+
return handleSecurityCheck({ ...args, projectId: pid });
|
|
37
|
+
}));
|
|
26
38
|
}
|
|
27
39
|
//# sourceMappingURL=register-security-tools.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-security-tools.js","sourceRoot":"","sources":["../../src/tools/register-security-tools.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,oFAAoF;AAGpF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,CAAC,EAAE,MAAM,kBAAkB,CAAC;AACrC,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"register-security-tools.js","sourceRoot":"","sources":["../../src/tools/register-security-tools.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,oFAAoF;AAGpF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,CAAC,EAAE,MAAM,kBAAkB,CAAC;AACrC,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAElF,MAAM,UAAU,qBAAqB,CAAC,MAAiB;IACrD,4BAA4B;IAC5B,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;QACE,WAAW,EAAE,CAAC,CAAC,kCAAkC,CAAC;QAClD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;QACnC,WAAW,EAAE;YACX,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC;YAC1D,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;YAC1F,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,GAAG,CAAC,IAAI,CAAC;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,iEAAiE,CAAC;YAC9E,UAAU,EAAE,CAAC;iBACV,IAAI,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;iBACnC,QAAQ,EAAE;iBACV,QAAQ,CACP,kHAAkH,CACnH;YACH,SAAS,EAAE,CAAC;iBACT,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;iBAC3B,GAAG,CAAC,IAAI,CAAC;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,4DAA4D,CAAC;SAC1E;KACF,EACD,YAAY,CAAC,gBAAgB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAC5C,MAAM,GAAG,GAAG,gBAAgB,CAAC,IAAoD,CAAC,CAAC;QACnF,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,qBAAqB,CAAC;QAC/B,CAAC;QACD,OAAO,mBAAmB,CAAC,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,GAAG,EAEhD,CAAC,CAAC;IACR,CAAC,CAAC,CACH,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-spec-observability-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-spec-observability-tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"register-spec-observability-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-spec-observability-tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAuCtE"}
|
|
@@ -1,13 +1,19 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { handleSpecUsageReport } from './spec-usage-report.js';
|
|
3
3
|
import { safeLicensed } from './safe-handler.js';
|
|
4
|
+
import { resolveProjectId, missingProjectIdError } from './resolve-project-id.js';
|
|
4
5
|
export function registerSpecObservabilityTools(server) {
|
|
5
6
|
server.registerTool('spec_usage_report', {
|
|
6
7
|
description: 'Generate a spec observability report showing which specs agents are actively using. ' +
|
|
7
8
|
'Identifies hot specs (frequently accessed), cold specs (approved but forgotten), ' +
|
|
8
9
|
'AC hotspots, and the tool-to-spec usage matrix. Useful for gap analysis and team focus.',
|
|
9
10
|
inputSchema: {
|
|
10
|
-
projectId: z.string().
|
|
11
|
+
projectId: z.string().max(500).optional().describe('Project ID hash. Prefer projectPath.'),
|
|
12
|
+
projectPath: z
|
|
13
|
+
.string()
|
|
14
|
+
.max(4096)
|
|
15
|
+
.optional()
|
|
16
|
+
.describe('Absolute path to project root. Derives projectId automatically.'),
|
|
11
17
|
specId: z
|
|
12
18
|
.string()
|
|
13
19
|
.max(50)
|
|
@@ -19,6 +25,12 @@ export function registerSpecObservabilityTools(server) {
|
|
|
19
25
|
.describe('Time window for the report. Options: day | week | month | all. Defaults to week.'),
|
|
20
26
|
},
|
|
21
27
|
annotations: { title: 'Spec Usage Report', readOnlyHint: true },
|
|
22
|
-
}, safeLicensed('spec_usage_report', async (args) =>
|
|
28
|
+
}, safeLicensed('spec_usage_report', async (args) => {
|
|
29
|
+
const pid = resolveProjectId(args);
|
|
30
|
+
if (!pid) {
|
|
31
|
+
return missingProjectIdError;
|
|
32
|
+
}
|
|
33
|
+
return handleSpecUsageReport({ ...args, projectId: pid });
|
|
34
|
+
}));
|
|
23
35
|
}
|
|
24
36
|
//# sourceMappingURL=register-spec-observability-tools.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-spec-observability-tools.js","sourceRoot":"","sources":["../../src/tools/register-spec-observability-tools.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"register-spec-observability-tools.js","sourceRoot":"","sources":["../../src/tools/register-spec-observability-tools.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAElF,MAAM,UAAU,8BAA8B,CAAC,MAAiB;IAC9D,MAAM,CAAC,YAAY,CACjB,mBAAmB,EACnB;QACE,WAAW,EACT,sFAAsF;YACtF,mFAAmF;YACnF,yFAAyF;QAC3F,WAAW,EAAE;YACX,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;YAC1F,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,GAAG,CAAC,IAAI,CAAC;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,iEAAiE,CAAC;YAC9E,MAAM,EAAE,CAAC;iBACN,MAAM,EAAE;iBACR,GAAG,CAAC,EAAE,CAAC;iBACP,QAAQ,EAAE;iBACV,QAAQ,CACP,wGAAwG,CACzG;YACH,MAAM,EAAE,CAAC;iBACN,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;iBACrC,QAAQ,EAAE;iBACV,QAAQ,CACP,kFAAkF,CACnF;SACJ;QACD,WAAW,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,IAAI,EAAE;KAChE,EACD,YAAY,CAAC,mBAAmB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAC/C,MAAM,GAAG,GAAG,gBAAgB,CAAC,IAAoD,CAAC,CAAC;QACnF,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,qBAAqB,CAAC;QAC/B,CAAC;QACD,OAAO,qBAAqB,CAAC,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,GAAG,EAA0B,CAAC,CAAC;IACpF,CAAC,CAAC,CACH,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-spec-split-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-spec-split-tools.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"register-spec-split-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-spec-split-tools.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAMzE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAqF9D"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
import { safeLicensed } from './safe-handler.js';
|
|
4
4
|
import { handleAnalyzeSpecSize, handleSplitSpec } from './spec-split-handler.js';
|
|
5
|
+
import { resolveProjectId, missingProjectIdError } from './resolve-project-id.js';
|
|
5
6
|
export function registerSpecSplitTools(server) {
|
|
6
7
|
// analyze_spec_size — read-only, free tier
|
|
7
8
|
server.registerTool('analyze_spec_size', {
|
|
@@ -12,13 +13,21 @@ export function registerSpecSplitTools(server) {
|
|
|
12
13
|
'Returns a SpecSizeAnalysis with shouldSplit flag, reasons, and suggestedSplits.',
|
|
13
14
|
annotations: { readOnlyHint: true },
|
|
14
15
|
inputSchema: {
|
|
15
|
-
projectId: z
|
|
16
|
+
projectId: z.string().max(500).optional().describe('Project ID hash. Prefer projectPath.'),
|
|
17
|
+
projectPath: z
|
|
16
18
|
.string()
|
|
17
|
-
.max(
|
|
18
|
-
.
|
|
19
|
+
.max(4096)
|
|
20
|
+
.optional()
|
|
21
|
+
.describe('Absolute path to project root. Derives projectId automatically.'),
|
|
19
22
|
specId: z.string().max(500).describe('Spec ID to analyze (e.g. SPEC-042)'),
|
|
20
23
|
},
|
|
21
|
-
}, safeLicensed('analyze_spec_size', async (args) =>
|
|
24
|
+
}, safeLicensed('analyze_spec_size', async (args) => {
|
|
25
|
+
const pid = resolveProjectId(args);
|
|
26
|
+
if (!pid) {
|
|
27
|
+
return missingProjectIdError;
|
|
28
|
+
}
|
|
29
|
+
return handleAnalyzeSpecSize({ ...args, projectId: pid });
|
|
30
|
+
}));
|
|
22
31
|
// split_spec — destructive (creates new specs and modifies original), pro tier
|
|
23
32
|
server.registerTool('split_spec', {
|
|
24
33
|
description: 'Execute the division of a large spec into smaller child specs. ' +
|
|
@@ -30,7 +39,12 @@ export function registerSpecSplitTools(server) {
|
|
|
30
39
|
'DESTRUCTIVE: modifies the original spec status to "superseded".',
|
|
31
40
|
annotations: { destructiveHint: true },
|
|
32
41
|
inputSchema: {
|
|
33
|
-
projectId: z.string().max(500).describe('Project ID
|
|
42
|
+
projectId: z.string().max(500).optional().describe('Project ID hash. Prefer projectPath.'),
|
|
43
|
+
projectPath: z
|
|
44
|
+
.string()
|
|
45
|
+
.max(4096)
|
|
46
|
+
.optional()
|
|
47
|
+
.describe('Absolute path to project root. Derives projectId automatically.'),
|
|
34
48
|
specId: z.string().max(500).describe('Spec ID to split (e.g. SPEC-042)'),
|
|
35
49
|
proposedSplits: z
|
|
36
50
|
.array(z.object({
|
|
@@ -46,6 +60,12 @@ export function registerSpecSplitTools(server) {
|
|
|
46
60
|
.optional()
|
|
47
61
|
.describe('Custom split proposals. If omitted, uses auto-generated proposals from analyze_spec_size.'),
|
|
48
62
|
},
|
|
49
|
-
}, safeLicensed('split_spec', async (args) =>
|
|
63
|
+
}, safeLicensed('split_spec', async (args) => {
|
|
64
|
+
const pid = resolveProjectId(args);
|
|
65
|
+
if (!pid) {
|
|
66
|
+
return missingProjectIdError;
|
|
67
|
+
}
|
|
68
|
+
return handleSplitSpec({ ...args, projectId: pid });
|
|
69
|
+
}));
|
|
50
70
|
}
|
|
51
71
|
//# sourceMappingURL=register-spec-split-tools.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-spec-split-tools.js","sourceRoot":"","sources":["../../src/tools/register-spec-split-tools.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAG7F,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"register-spec-split-tools.js","sourceRoot":"","sources":["../../src/tools/register-spec-split-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-stack-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-stack-tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"register-stack-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-stack-tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAQzE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAwH1D"}
|
|
@@ -3,14 +3,19 @@ import { handleAuditStack } from './audit-stack.js';
|
|
|
3
3
|
import { handlePlanUpgrade } from './plan-upgrade.js';
|
|
4
4
|
import { handleDetectDeprecations } from './detect-deprecations.js';
|
|
5
5
|
import { safeLicensed } from './safe-handler.js';
|
|
6
|
+
import { resolveProjectId, missingProjectIdError } from './resolve-project-id.js';
|
|
6
7
|
export function registerStackTools(server) {
|
|
7
8
|
// audit_stack — SPEC-041
|
|
8
9
|
server.registerTool('audit_stack', {
|
|
9
10
|
description: 'Audit all project dependencies, classify as up_to_date/outdated/vulnerable/unmaintained, and generate a StackHealthScore (0-100).',
|
|
10
11
|
annotations: { readOnlyHint: true },
|
|
11
12
|
inputSchema: {
|
|
12
|
-
projectId: z.string().max(500).describe('Project ID'),
|
|
13
|
-
projectPath: z
|
|
13
|
+
projectId: z.string().max(500).optional().describe('Project ID hash. Prefer projectPath.'),
|
|
14
|
+
projectPath: z
|
|
15
|
+
.string()
|
|
16
|
+
.max(4096)
|
|
17
|
+
.optional()
|
|
18
|
+
.describe('Absolute path to project root. Derives projectId automatically.'),
|
|
14
19
|
format: z
|
|
15
20
|
.enum(['summary', 'json'])
|
|
16
21
|
.optional()
|
|
@@ -26,14 +31,24 @@ export function registerStackTools(server) {
|
|
|
26
31
|
.describe('Set isError=true if score drops below threshold (for CI usage)'),
|
|
27
32
|
ci: z.boolean().optional().describe('CI mode — exit with error on critical findings'),
|
|
28
33
|
},
|
|
29
|
-
}, safeLicensed('audit_stack', async (args) =>
|
|
34
|
+
}, safeLicensed('audit_stack', async (args) => {
|
|
35
|
+
const pid = resolveProjectId(args);
|
|
36
|
+
if (!pid) {
|
|
37
|
+
return missingProjectIdError;
|
|
38
|
+
}
|
|
39
|
+
return handleAuditStack({ ...args, projectId: pid });
|
|
40
|
+
}));
|
|
30
41
|
// plan_upgrade — SPEC-041
|
|
31
42
|
server.registerTool('plan_upgrade', {
|
|
32
43
|
description: 'Generate a migration plan for upgrading a specific package, including breaking changes, estimated effort, and rollback procedure.',
|
|
33
44
|
annotations: { readOnlyHint: true },
|
|
34
45
|
inputSchema: {
|
|
35
|
-
projectId: z.string().max(500).describe('Project ID'),
|
|
36
|
-
projectPath: z
|
|
46
|
+
projectId: z.string().max(500).optional().describe('Project ID hash. Prefer projectPath.'),
|
|
47
|
+
projectPath: z
|
|
48
|
+
.string()
|
|
49
|
+
.max(4096)
|
|
50
|
+
.optional()
|
|
51
|
+
.describe('Absolute path to project root. Derives projectId automatically.'),
|
|
37
52
|
packageName: z
|
|
38
53
|
.string()
|
|
39
54
|
.max(500)
|
|
@@ -50,14 +65,24 @@ export function registerStackTools(server) {
|
|
|
50
65
|
.optional()
|
|
51
66
|
.describe('Output format: summary (default) or json'),
|
|
52
67
|
},
|
|
53
|
-
}, safeLicensed('plan_upgrade', async (args) =>
|
|
68
|
+
}, safeLicensed('plan_upgrade', async (args) => {
|
|
69
|
+
const pid = resolveProjectId(args);
|
|
70
|
+
if (!pid) {
|
|
71
|
+
return missingProjectIdError;
|
|
72
|
+
}
|
|
73
|
+
return handlePlanUpgrade({ ...args, projectId: pid });
|
|
74
|
+
}));
|
|
54
75
|
// detect_deprecations — SPEC-041
|
|
55
76
|
server.registerTool('detect_deprecations', {
|
|
56
77
|
description: 'Scan project source files for deprecated API patterns (pattern-based, no network). Returns a deprecation report with tech-debt estimate.',
|
|
57
78
|
annotations: { readOnlyHint: true },
|
|
58
79
|
inputSchema: {
|
|
59
|
-
projectId: z.string().max(500).describe('Project ID'),
|
|
60
|
-
projectPath: z
|
|
80
|
+
projectId: z.string().max(500).optional().describe('Project ID hash. Prefer projectPath.'),
|
|
81
|
+
projectPath: z
|
|
82
|
+
.string()
|
|
83
|
+
.max(4096)
|
|
84
|
+
.optional()
|
|
85
|
+
.describe('Absolute path to project root. Derives projectId automatically.'),
|
|
61
86
|
ecosystem: z
|
|
62
87
|
.enum(['nodejs', 'python', 'browser', 'go', 'java', 'rust', 'dotnet'])
|
|
63
88
|
.optional()
|
|
@@ -67,6 +92,12 @@ export function registerStackTools(server) {
|
|
|
67
92
|
.optional()
|
|
68
93
|
.describe('Output format: summary (default) or json'),
|
|
69
94
|
},
|
|
70
|
-
}, safeLicensed('detect_deprecations', async (args) =>
|
|
95
|
+
}, safeLicensed('detect_deprecations', async (args) => {
|
|
96
|
+
const pid = resolveProjectId(args);
|
|
97
|
+
if (!pid) {
|
|
98
|
+
return missingProjectIdError;
|
|
99
|
+
}
|
|
100
|
+
return handleDetectDeprecations({ ...args, projectId: pid });
|
|
101
|
+
}));
|
|
71
102
|
}
|
|
72
103
|
//# sourceMappingURL=register-stack-tools.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-stack-tools.js","sourceRoot":"","sources":["../../src/tools/register-stack-tools.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"register-stack-tools.js","sourceRoot":"","sources":["../../src/tools/register-stack-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-team-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-team-tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"register-team-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-team-tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAgBzE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAmIzD"}
|
|
@@ -3,12 +3,18 @@ import { handlePlanTeamDistribution } from './plan-team-distribution.js';
|
|
|
3
3
|
import { handleGenerateTeammatePrompt, handleGenerateLayerPrompts, } from './generate-teammate-prompt.js';
|
|
4
4
|
import { handleValidateTeamResults } from './validate-team-results.js';
|
|
5
5
|
import { safeLicensed } from './safe-handler.js';
|
|
6
|
+
import { resolveProjectId, missingProjectIdError } from './resolve-project-id.js';
|
|
6
7
|
export function registerTeamTools(server) {
|
|
7
8
|
server.registerTool('plan_team_distribution', {
|
|
8
9
|
description: 'Plan how to distribute approved specs across a team of Claude Code agents. ' +
|
|
9
10
|
'Detects file conflicts, assigns ownership, and produces phased execution order.',
|
|
10
11
|
inputSchema: {
|
|
11
|
-
projectId: z.string().max(500).describe('Project
|
|
12
|
+
projectId: z.string().max(500).optional().describe('Project ID hash. Prefer projectPath.'),
|
|
13
|
+
projectPath: z
|
|
14
|
+
.string()
|
|
15
|
+
.max(4096)
|
|
16
|
+
.optional()
|
|
17
|
+
.describe('Absolute path to project root. Derives projectId automatically.'),
|
|
12
18
|
specIds: z
|
|
13
19
|
.array(z.string().max(500))
|
|
14
20
|
.max(100)
|
|
@@ -20,14 +26,25 @@ export function registerTeamTools(server) {
|
|
|
20
26
|
.describe('Template ID: parallel-specs | implement-and-test. Defaults to parallel-specs.'),
|
|
21
27
|
},
|
|
22
28
|
annotations: { readOnlyHint: false },
|
|
23
|
-
}, safeLicensed('plan_team_distribution', async (args) =>
|
|
29
|
+
}, safeLicensed('plan_team_distribution', async (args) => {
|
|
30
|
+
const pid = resolveProjectId(args);
|
|
31
|
+
if (!pid) {
|
|
32
|
+
return missingProjectIdError;
|
|
33
|
+
}
|
|
34
|
+
return handlePlanTeamDistribution({ ...args, projectId: pid });
|
|
35
|
+
}));
|
|
24
36
|
server.registerTool('generate_teammate_prompt', {
|
|
25
37
|
description: 'Generate structured agent prompts for an Agent Team. Two modes: ' +
|
|
26
38
|
'(1) Spec mode — provide specId + teammateName + assignedFiles + role to generate a prompt for a specific spec and teammate. ' +
|
|
27
39
|
'(2) Layer mode — provide only projectId (and optional layer) to generate prompts for each detected architecture layer (frontend, backend, engine, storage, etc.). ' +
|
|
28
40
|
'Layer mode includes file ownership, stack-specific conventions, and quality gates per layer.',
|
|
29
41
|
inputSchema: {
|
|
30
|
-
projectId: z.string().max(500).describe('Project
|
|
42
|
+
projectId: z.string().max(500).optional().describe('Project ID hash. Prefer projectPath.'),
|
|
43
|
+
projectPath: z
|
|
44
|
+
.string()
|
|
45
|
+
.max(4096)
|
|
46
|
+
.optional()
|
|
47
|
+
.describe('Absolute path to project root. Derives projectId automatically.'),
|
|
31
48
|
specId: z
|
|
32
49
|
.string()
|
|
33
50
|
.max(500)
|
|
@@ -55,7 +72,11 @@ export function registerTeamTools(server) {
|
|
|
55
72
|
},
|
|
56
73
|
annotations: { readOnlyHint: true },
|
|
57
74
|
}, safeLicensed('generate_teammate_prompt', async (args) => {
|
|
58
|
-
const
|
|
75
|
+
const pid = resolveProjectId(args);
|
|
76
|
+
if (!pid) {
|
|
77
|
+
return missingProjectIdError;
|
|
78
|
+
}
|
|
79
|
+
const typedArgs = { ...args, projectId: pid };
|
|
59
80
|
// Layer mode: specId not provided
|
|
60
81
|
if (!typedArgs.specId) {
|
|
61
82
|
return handleGenerateLayerPrompts({
|
|
@@ -69,7 +90,12 @@ export function registerTeamTools(server) {
|
|
|
69
90
|
description: 'Validate the combined results from all teammates after parallel execution. ' +
|
|
70
91
|
'Checks for file conflicts, criteria coverage, and recommends merge order.',
|
|
71
92
|
inputSchema: {
|
|
72
|
-
projectId: z.string().max(500).describe('Project
|
|
93
|
+
projectId: z.string().max(500).optional().describe('Project ID hash. Prefer projectPath.'),
|
|
94
|
+
projectPath: z
|
|
95
|
+
.string()
|
|
96
|
+
.max(4096)
|
|
97
|
+
.optional()
|
|
98
|
+
.describe('Absolute path to project root. Derives projectId automatically.'),
|
|
73
99
|
specIds: z.array(z.string().max(500)).max(100).describe('Spec IDs that were distributed'),
|
|
74
100
|
teammateNames: z
|
|
75
101
|
.array(z.string().max(500))
|
|
@@ -77,6 +103,12 @@ export function registerTeamTools(server) {
|
|
|
77
103
|
.describe('Names of teammates whose results to validate'),
|
|
78
104
|
},
|
|
79
105
|
annotations: { readOnlyHint: true },
|
|
80
|
-
}, safeLicensed('validate_team_results', async (args) =>
|
|
106
|
+
}, safeLicensed('validate_team_results', async (args) => {
|
|
107
|
+
const pid = resolveProjectId(args);
|
|
108
|
+
if (!pid) {
|
|
109
|
+
return missingProjectIdError;
|
|
110
|
+
}
|
|
111
|
+
return handleValidateTeamResults({ ...args, projectId: pid });
|
|
112
|
+
}));
|
|
81
113
|
}
|
|
82
114
|
//# sourceMappingURL=register-team-tools.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-team-tools.js","sourceRoot":"","sources":["../../src/tools/register-team-tools.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EACL,4BAA4B,EAC5B,0BAA0B,GAC3B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"register-team-tools.js","sourceRoot":"","sources":["../../src/tools/register-team-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-telemetry-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-telemetry-tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAMzE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"register-telemetry-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-telemetry-tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAMzE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA4B9D"}
|
|
@@ -8,7 +8,12 @@ export function registerTelemetryTools(server) {
|
|
|
8
8
|
'(tool names, stack info) — no paths, emails, or personal data. ' +
|
|
9
9
|
'A random installation ID is generated locally and is the only identifier used.',
|
|
10
10
|
inputSchema: {
|
|
11
|
-
projectId: z.string().
|
|
11
|
+
projectId: z.string().max(500).optional().describe('Project ID hash. Prefer projectPath.'),
|
|
12
|
+
projectPath: z
|
|
13
|
+
.string()
|
|
14
|
+
.max(4096)
|
|
15
|
+
.optional()
|
|
16
|
+
.describe('Absolute path to project root. Derives projectId automatically.'),
|
|
12
17
|
action: z
|
|
13
18
|
.enum(['enable', 'disable', 'status'])
|
|
14
19
|
.describe('Action to perform: "enable" to opt in, "disable" to opt out, "status" to check current state.'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-telemetry-tools.js","sourceRoot":"","sources":["../../src/tools/register-telemetry-tools.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAGpE,MAAM,UAAU,sBAAsB,CAAC,MAAiB;IACtD,MAAM,CAAC,YAAY,CACjB,qBAAqB,EACrB;QACE,WAAW,EACT,sEAAsE;YACtE,kFAAkF;YAClF,iEAAiE;YACjE,gFAAgF;QAClF,WAAW,EAAE;YACX,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"register-telemetry-tools.js","sourceRoot":"","sources":["../../src/tools/register-telemetry-tools.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAGpE,MAAM,UAAU,sBAAsB,CAAC,MAAiB;IACtD,MAAM,CAAC,YAAY,CACjB,qBAAqB,EACrB;QACE,WAAW,EACT,sEAAsE;YACtE,kFAAkF;YAClF,iEAAiE;YACjE,gFAAgF;QAClF,WAAW,EAAE;YACX,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;YAC1F,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,GAAG,CAAC,IAAI,CAAC;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,iEAAiE,CAAC;YAC9E,MAAM,EAAE,CAAC;iBACN,IAAI,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;iBACrC,QAAQ,CACP,+FAA+F,CAChG;SACJ;QACD,WAAW,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,YAAY,EAAE,KAAK,EAAE;KACnE,EACD,WAAW,CAAC,qBAAqB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAChD,wBAAwB,CAAC,IAA+B,CAAC,CAC1D,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-versioning-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-versioning-tools.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"register-versioning-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-versioning-tools.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AASzE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAkP/D"}
|
|
@@ -5,6 +5,7 @@ import { handleVersionSpec } from './version-spec.js';
|
|
|
5
5
|
import { handleBranchSpec } from './branch-spec.js';
|
|
6
6
|
import { handleMergeSpecBranch } from './merge-spec-branch.js';
|
|
7
7
|
import { handleDiffSpecVersions, handleSpecVersionHistory } from './spec-diff-handler.js';
|
|
8
|
+
import { resolveProjectId, missingProjectIdError } from './resolve-project-id.js';
|
|
8
9
|
export function registerVersioningTools(server) {
|
|
9
10
|
// version_spec — Create a tagged version snapshot of a spec
|
|
10
11
|
server.registerTool('version_spec', {
|
|
@@ -13,7 +14,12 @@ export function registerVersioningTools(server) {
|
|
|
13
14
|
'Uses semantic versioning (vMAJOR.MINOR.PATCH). Tag is auto-incremented if not specified.',
|
|
14
15
|
annotations: { title: 'Version Spec' },
|
|
15
16
|
inputSchema: {
|
|
16
|
-
projectId: z.string().max(500).describe('Project ID'),
|
|
17
|
+
projectId: z.string().max(500).optional().describe('Project ID hash. Prefer projectPath.'),
|
|
18
|
+
projectPath: z
|
|
19
|
+
.string()
|
|
20
|
+
.max(4096)
|
|
21
|
+
.optional()
|
|
22
|
+
.describe('Absolute path to project root. Derives projectId automatically.'),
|
|
17
23
|
specId: z.string().max(500).describe('Spec ID to snapshot (e.g., "SPEC-042")'),
|
|
18
24
|
tag: z
|
|
19
25
|
.string()
|
|
@@ -33,7 +39,13 @@ export function registerVersioningTools(server) {
|
|
|
33
39
|
.optional()
|
|
34
40
|
.describe('Absolute path to the spec.md file to snapshot its content'),
|
|
35
41
|
},
|
|
36
|
-
}, safeLicensed('version_spec', async (args) =>
|
|
42
|
+
}, safeLicensed('version_spec', async (args) => {
|
|
43
|
+
const pid = resolveProjectId(args);
|
|
44
|
+
if (!pid) {
|
|
45
|
+
return missingProjectIdError;
|
|
46
|
+
}
|
|
47
|
+
return handleVersionSpec({ ...args, projectId: pid });
|
|
48
|
+
}));
|
|
37
49
|
// branch_spec — Create a spec branch for experimentation
|
|
38
50
|
server.registerTool('branch_spec', {
|
|
39
51
|
description: 'Create a spec branch for experimentation — try alternative approaches without affecting the main spec. ' +
|
|
@@ -41,7 +53,12 @@ export function registerVersioningTools(server) {
|
|
|
41
53
|
'Branch name must be lowercase kebab-case (e.g., "auth-refactor", "alt-design-v2").',
|
|
42
54
|
annotations: { title: 'Branch Spec' },
|
|
43
55
|
inputSchema: {
|
|
44
|
-
projectId: z.string().max(500).describe('Project ID'),
|
|
56
|
+
projectId: z.string().max(500).optional().describe('Project ID hash. Prefer projectPath.'),
|
|
57
|
+
projectPath: z
|
|
58
|
+
.string()
|
|
59
|
+
.max(4096)
|
|
60
|
+
.optional()
|
|
61
|
+
.describe('Absolute path to project root. Derives projectId automatically.'),
|
|
45
62
|
specId: z.string().max(500).describe('Spec ID to branch (e.g., "SPEC-042")'),
|
|
46
63
|
branchName: z
|
|
47
64
|
.string()
|
|
@@ -59,7 +76,13 @@ export function registerVersioningTools(server) {
|
|
|
59
76
|
.optional()
|
|
60
77
|
.describe('Absolute path to the spec.md file to use as branch starting content'),
|
|
61
78
|
},
|
|
62
|
-
}, safeLicensed('branch_spec', async (args) =>
|
|
79
|
+
}, safeLicensed('branch_spec', async (args) => {
|
|
80
|
+
const pid = resolveProjectId(args);
|
|
81
|
+
if (!pid) {
|
|
82
|
+
return missingProjectIdError;
|
|
83
|
+
}
|
|
84
|
+
return handleBranchSpec({ ...args, projectId: pid });
|
|
85
|
+
}));
|
|
63
86
|
// merge_spec_branch — Merge a spec branch back into main
|
|
64
87
|
server.registerTool('merge_spec_branch', {
|
|
65
88
|
description: 'Merge an experimental spec branch back into the main spec. ' +
|
|
@@ -68,7 +91,12 @@ export function registerVersioningTools(server) {
|
|
|
68
91
|
'Optionally provide resolvedContent if you have already resolved conflicts manually.',
|
|
69
92
|
annotations: { title: 'Merge Spec Branch' },
|
|
70
93
|
inputSchema: {
|
|
71
|
-
projectId: z.string().max(500).describe('Project ID'),
|
|
94
|
+
projectId: z.string().max(500).optional().describe('Project ID hash. Prefer projectPath.'),
|
|
95
|
+
projectPath: z
|
|
96
|
+
.string()
|
|
97
|
+
.max(4096)
|
|
98
|
+
.optional()
|
|
99
|
+
.describe('Absolute path to project root. Derives projectId automatically.'),
|
|
72
100
|
specId: z.string().max(500).describe('Spec ID to merge into (e.g., "SPEC-042")'),
|
|
73
101
|
branchName: z.string().max(100).describe('Name of the branch to merge (must exist)'),
|
|
74
102
|
resolvedContent: z
|
|
@@ -89,7 +117,13 @@ export function registerVersioningTools(server) {
|
|
|
89
117
|
.optional()
|
|
90
118
|
.describe('Merge commit message describing what was merged'),
|
|
91
119
|
},
|
|
92
|
-
}, safeLicensed('merge_spec_branch', async (args) =>
|
|
120
|
+
}, safeLicensed('merge_spec_branch', async (args) => {
|
|
121
|
+
const pid = resolveProjectId(args);
|
|
122
|
+
if (!pid) {
|
|
123
|
+
return missingProjectIdError;
|
|
124
|
+
}
|
|
125
|
+
return handleMergeSpecBranch({ ...args, projectId: pid });
|
|
126
|
+
}));
|
|
93
127
|
// diff_spec_versions — Compare two version snapshots of a spec
|
|
94
128
|
server.registerTool('diff_spec_versions', {
|
|
95
129
|
description: 'Compare two tagged version snapshots of a spec to see exactly what changed. ' +
|
|
@@ -98,11 +132,13 @@ export function registerVersioningTools(server) {
|
|
|
98
132
|
'If only toVersion is omitted, it defaults to the latest snapshot.',
|
|
99
133
|
annotations: { title: 'Diff Spec Versions', readOnlyHint: true },
|
|
100
134
|
inputSchema: {
|
|
101
|
-
projectId: z.string().max(500).describe('Project ID'),
|
|
102
|
-
|
|
135
|
+
projectId: z.string().max(500).optional().describe('Project ID hash. Prefer projectPath.'),
|
|
136
|
+
projectPath: z
|
|
103
137
|
.string()
|
|
104
|
-
.max(
|
|
105
|
-
.
|
|
138
|
+
.max(4096)
|
|
139
|
+
.optional()
|
|
140
|
+
.describe('Absolute path to project root. Derives projectId automatically.'),
|
|
141
|
+
specId: z.string().max(500).describe('Spec ID to diff (e.g., "SPEC-042")'),
|
|
106
142
|
fromVersion: z
|
|
107
143
|
.string()
|
|
108
144
|
.max(50)
|
|
@@ -120,7 +156,13 @@ export function registerVersioningTools(server) {
|
|
|
120
156
|
.optional()
|
|
121
157
|
.describe('Output format. Valid values: "text" (default, +/- line diff) | "json" (structured object).'),
|
|
122
158
|
},
|
|
123
|
-
}, safeLicensed('diff_spec_versions', async (args) =>
|
|
159
|
+
}, safeLicensed('diff_spec_versions', async (args) => {
|
|
160
|
+
const pid = resolveProjectId(args);
|
|
161
|
+
if (!pid) {
|
|
162
|
+
return missingProjectIdError;
|
|
163
|
+
}
|
|
164
|
+
return handleDiffSpecVersions({ ...args, projectId: pid });
|
|
165
|
+
}));
|
|
124
166
|
// spec_version_history — List all version snapshots with timestamps and change summaries
|
|
125
167
|
server.registerTool('spec_version_history', {
|
|
126
168
|
description: 'List all tagged version snapshots of a spec with their timestamps, authors, and ' +
|
|
@@ -130,7 +172,12 @@ export function registerVersioningTools(server) {
|
|
|
130
172
|
'Note: for changelog history (criteria changes, status transitions) use spec_history instead.',
|
|
131
173
|
annotations: { title: 'Spec Version History', readOnlyHint: true },
|
|
132
174
|
inputSchema: {
|
|
133
|
-
projectId: z.string().max(500).describe('Project ID'),
|
|
175
|
+
projectId: z.string().max(500).optional().describe('Project ID hash. Prefer projectPath.'),
|
|
176
|
+
projectPath: z
|
|
177
|
+
.string()
|
|
178
|
+
.max(4096)
|
|
179
|
+
.optional()
|
|
180
|
+
.describe('Absolute path to project root. Derives projectId automatically.'),
|
|
134
181
|
specId: z
|
|
135
182
|
.string()
|
|
136
183
|
.max(500)
|
|
@@ -143,6 +190,12 @@ export function registerVersioningTools(server) {
|
|
|
143
190
|
.optional()
|
|
144
191
|
.describe('Maximum number of versions to return (default: 20, max: 100)'),
|
|
145
192
|
},
|
|
146
|
-
}, safeLicensed('spec_version_history', async (args) =>
|
|
193
|
+
}, safeLicensed('spec_version_history', async (args) => {
|
|
194
|
+
const pid = resolveProjectId(args);
|
|
195
|
+
if (!pid) {
|
|
196
|
+
return missingProjectIdError;
|
|
197
|
+
}
|
|
198
|
+
return handleSpecVersionHistory({ ...args, projectId: pid });
|
|
199
|
+
}));
|
|
147
200
|
}
|
|
148
201
|
//# sourceMappingURL=register-versioning-tools.js.map
|