@planu/cli 0.92.0 → 0.94.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/config/license-plans.json +1 -0
- 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/engine/token-savings-calculator.d.ts +3 -0
- package/dist/engine/token-savings-calculator.d.ts.map +1 -0
- package/dist/engine/token-savings-calculator.js +115 -0
- package/dist/engine/token-savings-calculator.js.map +1 -0
- 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-token-tools.d.ts.map +1 -1
- package/dist/tools/register-token-tools.js +18 -0
- package/dist/tools/register-token-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/dist/tools/token-savings-handler.d.ts +7 -0
- package/dist/tools/token-savings-handler.d.ts.map +1 -0
- package/dist/tools/token-savings-handler.js +39 -0
- package/dist/tools/token-savings-handler.js.map +1 -0
- package/dist/types/token-ledger.d.ts +23 -0
- package/dist/types/token-ledger.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/config/license-plans.json +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-infrastructure-tools.js","sourceRoot":"","sources":["../../src/tools/register-infrastructure-tools.ts"],"names":[],"mappings":"AAAA,4FAA4F;AAG5F,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"register-infrastructure-tools.js","sourceRoot":"","sources":["../../src/tools/register-infrastructure-tools.ts"],"names":[],"mappings":"AAAA,4FAA4F;AAG5F,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAElF,MAAM,UAAU,2BAA2B,CAAC,MAAiB;IAC3D,MAAM,CAAC,YAAY,CACjB,yBAAyB,EACzB;QACE,WAAW,EACT,qDAAqD;YACrD,8FAA8F;YAC9F,oFAAoF;YACpF,wDAAwD;QAC1D,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;QACnC,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,GAAG,CAAC;iBACR,QAAQ,CAAC,+DAA+D,CAAC;YAC5E,OAAO,EAAE,CAAC;iBACP,KAAK,CACJ,CAAC;iBACE,IAAI,CAAC,CAAC,WAAW,EAAE,gBAAgB,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;iBAC9D,QAAQ,CAAC,kEAAkE,CAAC,CAChF;iBACA,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,EAAE;iBACV,QAAQ,CACP,8EAA8E;gBAC5E,sCAAsC,CACzC;YACH,WAAW,EAAE,CAAC;iBACX,IAAI,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;iBAChC,QAAQ,EAAE;iBACV,QAAQ,CACP,4CAA4C;gBAC1C,0DAA0D,CAC7D;SACJ;KACF,EACD,WAAW,CAAC,yBAAyB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACpD,MAAM,GAAG,GAAG,gBAAgB,CAAC,IAAoD,CAAC,CAAC;QACnF,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,qBAAqB,CAAC;QAC/B,CAAC;QACD,OAAO,4BAA4B,CAAC;YAClC,GAAG,IAAI;YACP,SAAS,EAAE,GAAG;SACgB,CAAC,CAAC;IACpC,CAAC,CAAC,CACH,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-lessons-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-lessons-tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAmBzE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"register-lessons-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-lessons-tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAmBzE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAqE5D"}
|
|
@@ -18,8 +18,12 @@ export function registerLessonsTools(server) {
|
|
|
18
18
|
'Captures what went wrong (or right), the category, severity, and how to prevent it next time. ' +
|
|
19
19
|
'Use after bugs, rollbacks, or effort >50% over estimate.',
|
|
20
20
|
inputSchema: {
|
|
21
|
-
projectId: z.string().
|
|
22
|
-
projectPath: z
|
|
21
|
+
projectId: z.string().max(500).optional().describe('Project ID hash. Prefer projectPath.'),
|
|
22
|
+
projectPath: z
|
|
23
|
+
.string()
|
|
24
|
+
.max(4096)
|
|
25
|
+
.optional()
|
|
26
|
+
.describe('Absolute path to project root. Derives projectId automatically.'),
|
|
23
27
|
specId: z
|
|
24
28
|
.string()
|
|
25
29
|
.optional()
|
|
@@ -42,8 +46,12 @@ export function registerLessonsTools(server) {
|
|
|
42
46
|
'Optionally filter by category, severity, or spec ID. ' +
|
|
43
47
|
'Returns matching lessons plus frequency stats by category to surface recurring patterns.',
|
|
44
48
|
inputSchema: {
|
|
45
|
-
projectId: z.string().
|
|
46
|
-
projectPath: z
|
|
49
|
+
projectId: z.string().max(500).optional().describe('Project ID hash. Prefer projectPath.'),
|
|
50
|
+
projectPath: z
|
|
51
|
+
.string()
|
|
52
|
+
.max(4096)
|
|
53
|
+
.optional()
|
|
54
|
+
.describe('Absolute path to project root. Derives projectId automatically.'),
|
|
47
55
|
category: CATEGORY_ENUM.optional().describe('Filter by category: estimation | testing | architecture | security | performance | ux | process | other'),
|
|
48
56
|
severity: SEVERITY_ENUM.optional().describe('Filter by severity: low | medium | high'),
|
|
49
57
|
specId: z.string().optional().describe('Filter by spec ID (e.g. "SPEC-042").'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-lessons-tools.js","sourceRoot":"","sources":["../../src/tools/register-lessons-tools.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAG1E,MAAM,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC;IAC3B,YAAY;IACZ,SAAS;IACT,cAAc;IACd,UAAU;IACV,aAAa;IACb,IAAI;IACJ,SAAS;IACT,OAAO;CACR,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;AAExD,MAAM,UAAU,oBAAoB,CAAC,MAAiB;IACpD,MAAM,CAAC,YAAY,CACjB,YAAY,EACZ;QACE,WAAW,EACT,0DAA0D;YAC1D,gGAAgG;YAChG,0DAA0D;QAC5D,WAAW,EAAE;YACX,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"register-lessons-tools.js","sourceRoot":"","sources":["../../src/tools/register-lessons-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-living-spec-advanced-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-living-spec-advanced-tools.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"register-living-spec-advanced-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-living-spec-advanced-tools.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAWzE;;GAEG;AACH,wBAAgB,+BAA+B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAqOvE"}
|
|
@@ -9,6 +9,7 @@ import { handleLivingSpecCoverage } from './living-spec-coverage.js';
|
|
|
9
9
|
import { handleSyncSpecToCode } from './sync-spec-to-code.js';
|
|
10
10
|
import { handleSyncCodeToSpec } from './sync-code-to-spec.js';
|
|
11
11
|
import { handleResolveSyncConflict } from './resolve-sync-conflict.js';
|
|
12
|
+
import { resolveProjectId, missingProjectIdError } from './resolve-project-id.js';
|
|
12
13
|
/**
|
|
13
14
|
* Registers SPEC-121 living spec advanced tools on the MCP server.
|
|
14
15
|
*/
|
|
@@ -17,7 +18,12 @@ export function registerLivingSpecAdvancedTools(server) {
|
|
|
17
18
|
server.registerTool('living_spec_watch', {
|
|
18
19
|
description: 'Start, stop, or check status of the in-memory drift watcher for a project. The watcher caches drift detection results with a configurable TTL to avoid redundant computations.',
|
|
19
20
|
inputSchema: {
|
|
20
|
-
projectId: z.string().max(500).describe('Project ID'),
|
|
21
|
+
projectId: z.string().max(500).optional().describe('Project ID hash. Prefer projectPath.'),
|
|
22
|
+
projectPath: z
|
|
23
|
+
.string()
|
|
24
|
+
.max(4096)
|
|
25
|
+
.optional()
|
|
26
|
+
.describe('Absolute path to project root. Derives projectId automatically.'),
|
|
21
27
|
action: z
|
|
22
28
|
.enum(['start', 'stop', 'status'])
|
|
23
29
|
.describe('Action to perform. Valid values: "start", "stop", "status"'),
|
|
@@ -34,39 +40,72 @@ export function registerLivingSpecAdvancedTools(server) {
|
|
|
34
40
|
.optional()
|
|
35
41
|
.describe('Glob patterns to exclude from drift watching (e.g., ["node_modules/**", "dist/**"])'),
|
|
36
42
|
},
|
|
37
|
-
}, safeLicensed('living_spec_watch', async (args) =>
|
|
43
|
+
}, safeLicensed('living_spec_watch', async (args) => {
|
|
44
|
+
const pid = resolveProjectId(args);
|
|
45
|
+
if (!pid) {
|
|
46
|
+
return missingProjectIdError;
|
|
47
|
+
}
|
|
48
|
+
return handleLivingSpecWatch({ ...args, projectId: pid });
|
|
49
|
+
}));
|
|
38
50
|
// living_spec_status
|
|
39
51
|
server.registerTool('living_spec_status', {
|
|
40
52
|
description: 'Get detailed status of the living spec watcher including cache state and configuration. Read-only diagnostic tool.',
|
|
41
53
|
annotations: { readOnlyHint: true },
|
|
42
54
|
inputSchema: {
|
|
43
|
-
projectId: z.string().max(500).describe('Project ID'),
|
|
55
|
+
projectId: z.string().max(500).optional().describe('Project ID hash. Prefer projectPath.'),
|
|
56
|
+
projectPath: z
|
|
57
|
+
.string()
|
|
58
|
+
.max(4096)
|
|
59
|
+
.optional()
|
|
60
|
+
.describe('Absolute path to project root. Derives projectId automatically.'),
|
|
44
61
|
specId: z
|
|
45
62
|
.string()
|
|
46
63
|
.max(500)
|
|
47
64
|
.optional()
|
|
48
65
|
.describe('Optional spec ID to get cached drift data for'),
|
|
49
66
|
},
|
|
50
|
-
}, safeLicensed('living_spec_status', async (args) =>
|
|
67
|
+
}, safeLicensed('living_spec_status', async (args) => {
|
|
68
|
+
const pid = resolveProjectId(args);
|
|
69
|
+
if (!pid) {
|
|
70
|
+
return missingProjectIdError;
|
|
71
|
+
}
|
|
72
|
+
return handleLivingSpecStatus({ ...args, projectId: pid });
|
|
73
|
+
}));
|
|
51
74
|
// spec_diff
|
|
52
75
|
server.registerTool('spec_diff', {
|
|
53
76
|
description: 'Compare spec hash snapshots to detect file and signature changes. Shows a Markdown-formatted diff table. Use after snapshot_spec_hashes to see what changed.',
|
|
54
77
|
annotations: { readOnlyHint: true },
|
|
55
78
|
inputSchema: {
|
|
56
|
-
projectId: z.string().max(500).describe('Project ID'),
|
|
79
|
+
projectId: z.string().max(500).optional().describe('Project ID hash. Prefer projectPath.'),
|
|
80
|
+
projectPath: z
|
|
81
|
+
.string()
|
|
82
|
+
.max(4096)
|
|
83
|
+
.optional()
|
|
84
|
+
.describe('Absolute path to project root. Derives projectId automatically.'),
|
|
57
85
|
specId: z
|
|
58
86
|
.string()
|
|
59
87
|
.max(500)
|
|
60
88
|
.optional()
|
|
61
89
|
.describe('Specific spec ID to diff (if omitted, diffs all specs)'),
|
|
62
90
|
},
|
|
63
|
-
}, safeLicensed('spec_diff', async (args) =>
|
|
91
|
+
}, safeLicensed('spec_diff', async (args) => {
|
|
92
|
+
const pid = resolveProjectId(args);
|
|
93
|
+
if (!pid) {
|
|
94
|
+
return missingProjectIdError;
|
|
95
|
+
}
|
|
96
|
+
return handleSpecDiff({ ...args, projectId: pid });
|
|
97
|
+
}));
|
|
64
98
|
// living_spec_coverage
|
|
65
99
|
server.registerTool('living_spec_coverage', {
|
|
66
100
|
description: 'Correlate test coverage with spec acceptance criteria. Parses Vitest JSON or JUnit XML reports and groups results by @spec annotations to determine criterion status (verified/regression/untested).',
|
|
67
101
|
annotations: { readOnlyHint: true },
|
|
68
102
|
inputSchema: {
|
|
69
|
-
projectId: z.string().max(500).describe('Project ID'),
|
|
103
|
+
projectId: z.string().max(500).optional().describe('Project ID hash. Prefer projectPath.'),
|
|
104
|
+
projectPath: z
|
|
105
|
+
.string()
|
|
106
|
+
.max(4096)
|
|
107
|
+
.optional()
|
|
108
|
+
.describe('Absolute path to project root. Derives projectId automatically.'),
|
|
70
109
|
coverageJsonPath: z
|
|
71
110
|
.string()
|
|
72
111
|
.max(4096)
|
|
@@ -74,30 +113,61 @@ export function registerLivingSpecAdvancedTools(server) {
|
|
|
74
113
|
.describe('Path to Vitest JSON report file'),
|
|
75
114
|
junitXmlPath: z.string().max(4096).optional().describe('Path to JUnit XML report file'),
|
|
76
115
|
},
|
|
77
|
-
}, safeLicensed('living_spec_coverage', async (args) =>
|
|
116
|
+
}, safeLicensed('living_spec_coverage', async (args) => {
|
|
117
|
+
const pid = resolveProjectId(args);
|
|
118
|
+
if (!pid) {
|
|
119
|
+
return missingProjectIdError;
|
|
120
|
+
}
|
|
121
|
+
return handleLivingSpecCoverage({ ...args, projectId: pid });
|
|
122
|
+
}));
|
|
78
123
|
// sync_spec_to_code
|
|
79
124
|
server.registerTool('sync_spec_to_code', {
|
|
80
125
|
description: 'Sync from spec to code: generate TODO comments for pending acceptance criteria that lack @spec annotations. Also detects conflicts between spec and code state.',
|
|
81
126
|
inputSchema: {
|
|
82
|
-
projectId: z.string().max(500).describe('Project ID'),
|
|
127
|
+
projectId: z.string().max(500).optional().describe('Project ID hash. Prefer projectPath.'),
|
|
128
|
+
projectPath: z
|
|
129
|
+
.string()
|
|
130
|
+
.max(4096)
|
|
131
|
+
.optional()
|
|
132
|
+
.describe('Absolute path to project root. Derives projectId automatically.'),
|
|
83
133
|
specId: z.string().max(500).describe('Spec ID to sync from'),
|
|
84
|
-
projectPath: z.string().max(4096).describe('Path to the project root directory'),
|
|
85
134
|
},
|
|
86
|
-
}, safeLicensed('sync_spec_to_code', async (args) =>
|
|
135
|
+
}, safeLicensed('sync_spec_to_code', async (args) => {
|
|
136
|
+
const pid = resolveProjectId(args);
|
|
137
|
+
if (!pid) {
|
|
138
|
+
return missingProjectIdError;
|
|
139
|
+
}
|
|
140
|
+
return handleSyncSpecToCode({ ...args, projectId: pid });
|
|
141
|
+
}));
|
|
87
142
|
// sync_code_to_spec
|
|
88
143
|
server.registerTool('sync_code_to_spec', {
|
|
89
144
|
description: 'Sync from code to spec: detect @spec annotations in source code and generate progress updates for the corresponding spec criteria. Also detects conflicts.',
|
|
90
145
|
inputSchema: {
|
|
91
|
-
projectId: z.string().max(500).describe('Project ID'),
|
|
146
|
+
projectId: z.string().max(500).optional().describe('Project ID hash. Prefer projectPath.'),
|
|
147
|
+
projectPath: z
|
|
148
|
+
.string()
|
|
149
|
+
.max(4096)
|
|
150
|
+
.optional()
|
|
151
|
+
.describe('Absolute path to project root. Derives projectId automatically.'),
|
|
92
152
|
specId: z.string().max(500).describe('Spec ID to sync to'),
|
|
93
|
-
projectPath: z.string().max(4096).describe('Path to the project root directory'),
|
|
94
153
|
},
|
|
95
|
-
}, safeLicensed('sync_code_to_spec', async (args) =>
|
|
154
|
+
}, safeLicensed('sync_code_to_spec', async (args) => {
|
|
155
|
+
const pid = resolveProjectId(args);
|
|
156
|
+
if (!pid) {
|
|
157
|
+
return missingProjectIdError;
|
|
158
|
+
}
|
|
159
|
+
return handleSyncCodeToSpec({ ...args, projectId: pid });
|
|
160
|
+
}));
|
|
96
161
|
// resolve_sync_conflict
|
|
97
162
|
server.registerTool('resolve_sync_conflict', {
|
|
98
163
|
description: 'Resolve a sync conflict detected by sync_spec_to_code or sync_code_to_spec. Choose to accept the code state, accept the spec state, or provide a manual resolution.',
|
|
99
164
|
inputSchema: {
|
|
100
|
-
projectId: z.string().max(500).describe('Project ID'),
|
|
165
|
+
projectId: z.string().max(500).optional().describe('Project ID hash. Prefer projectPath.'),
|
|
166
|
+
projectPath: z
|
|
167
|
+
.string()
|
|
168
|
+
.max(4096)
|
|
169
|
+
.optional()
|
|
170
|
+
.describe('Absolute path to project root. Derives projectId automatically.'),
|
|
101
171
|
conflictId: z.string().max(100).describe('Conflict ID from the sync result'),
|
|
102
172
|
resolution: z
|
|
103
173
|
.enum(['accept-code', 'accept-spec', 'manual'])
|
|
@@ -108,6 +178,12 @@ export function registerLivingSpecAdvancedTools(server) {
|
|
|
108
178
|
.optional()
|
|
109
179
|
.describe('Description of manual resolution (required when resolution is "manual")'),
|
|
110
180
|
},
|
|
111
|
-
}, safeLicensed('resolve_sync_conflict', async (args) =>
|
|
181
|
+
}, safeLicensed('resolve_sync_conflict', async (args) => {
|
|
182
|
+
const pid = resolveProjectId(args);
|
|
183
|
+
if (!pid) {
|
|
184
|
+
return missingProjectIdError;
|
|
185
|
+
}
|
|
186
|
+
return handleResolveSyncConflict({ ...args, projectId: pid });
|
|
187
|
+
}));
|
|
112
188
|
}
|
|
113
189
|
//# sourceMappingURL=register-living-spec-advanced-tools.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-living-spec-advanced-tools.js","sourceRoot":"","sources":["../../src/tools/register-living-spec-advanced-tools.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,qFAAqF;AACrF,yEAAyE;AAGzE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACvF,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"register-living-spec-advanced-tools.js","sourceRoot":"","sources":["../../src/tools/register-living-spec-advanced-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-living-spec-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-living-spec-tools.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"register-living-spec-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-living-spec-tools.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AASzE;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA6H/D"}
|
|
@@ -4,6 +4,7 @@ import { handleValidateAnnotations } from './validate-annotations.js';
|
|
|
4
4
|
import { handleGenerateAnnotations } from './generate-annotations.js';
|
|
5
5
|
import { handleSnapshotSpecHashes } from './snapshot-spec-hashes.js';
|
|
6
6
|
import { handleAutoReconcile } from './auto-reconcile.js';
|
|
7
|
+
import { resolveProjectId, missingProjectIdError } from './resolve-project-id.js';
|
|
7
8
|
/**
|
|
8
9
|
* Registers living spec tools on the MCP server.
|
|
9
10
|
*/
|
|
@@ -13,38 +14,74 @@ export function registerLivingSpecTools(server) {
|
|
|
13
14
|
description: 'Validate @spec annotations in source code. Checks that all annotated spec IDs exist and criteria numbers are valid. Use after adding annotations to verify correctness.',
|
|
14
15
|
annotations: { readOnlyHint: true },
|
|
15
16
|
inputSchema: {
|
|
16
|
-
projectId: z.string().max(500).describe('Project ID'),
|
|
17
|
-
projectPath: z
|
|
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.'),
|
|
18
23
|
specId: z
|
|
19
24
|
.string()
|
|
20
25
|
.max(500)
|
|
21
26
|
.optional()
|
|
22
27
|
.describe('Optional spec ID to filter annotations for a specific spec'),
|
|
23
28
|
},
|
|
24
|
-
}, safeLicensed('validate_annotations', async (args) =>
|
|
29
|
+
}, safeLicensed('validate_annotations', async (args) => {
|
|
30
|
+
const pid = resolveProjectId(args);
|
|
31
|
+
if (!pid) {
|
|
32
|
+
return missingProjectIdError;
|
|
33
|
+
}
|
|
34
|
+
return handleValidateAnnotations({ ...args, projectId: pid });
|
|
35
|
+
}));
|
|
25
36
|
// generate_annotations
|
|
26
37
|
server.registerTool('generate_annotations', {
|
|
27
38
|
description: 'Suggest @spec annotations for unannotated source files. Uses living-spec-analyzer heuristics to match files to spec criteria and generates annotation comments to add.',
|
|
28
39
|
annotations: { readOnlyHint: true },
|
|
29
40
|
inputSchema: {
|
|
30
|
-
projectId: z.string().max(500).describe('Project ID'),
|
|
31
|
-
projectPath: z
|
|
41
|
+
projectId: z.string().max(500).optional().describe('Project ID hash. Prefer projectPath.'),
|
|
42
|
+
projectPath: z
|
|
43
|
+
.string()
|
|
44
|
+
.max(4096)
|
|
45
|
+
.optional()
|
|
46
|
+
.describe('Absolute path to project root. Derives projectId automatically.'),
|
|
32
47
|
specId: z.string().max(500).describe('Spec ID to generate annotations for'),
|
|
33
48
|
},
|
|
34
|
-
}, safeLicensed('generate_annotations', async (args) =>
|
|
49
|
+
}, safeLicensed('generate_annotations', async (args) => {
|
|
50
|
+
const pid = resolveProjectId(args);
|
|
51
|
+
if (!pid) {
|
|
52
|
+
return missingProjectIdError;
|
|
53
|
+
}
|
|
54
|
+
return handleGenerateAnnotations({ ...args, projectId: pid });
|
|
55
|
+
}));
|
|
35
56
|
// snapshot_spec_hashes
|
|
36
57
|
server.registerTool('snapshot_spec_hashes', {
|
|
37
58
|
description: 'Create or update a SHA-256 hash snapshot for a spec. Tracks file hashes and exported function signatures of all files referenced in the spec technical.md File Plan section. Used for drift detection.',
|
|
38
59
|
inputSchema: {
|
|
39
|
-
projectId: z.string().max(500).describe('Project ID'),
|
|
60
|
+
projectId: z.string().max(500).optional().describe('Project ID hash. Prefer projectPath.'),
|
|
61
|
+
projectPath: z
|
|
62
|
+
.string()
|
|
63
|
+
.max(4096)
|
|
64
|
+
.optional()
|
|
65
|
+
.describe('Absolute path to project root. Derives projectId automatically.'),
|
|
40
66
|
specId: z.string().max(500).describe('Spec ID to snapshot'),
|
|
41
67
|
},
|
|
42
|
-
}, safeLicensed('snapshot_spec_hashes', async (args) =>
|
|
68
|
+
}, safeLicensed('snapshot_spec_hashes', async (args) => {
|
|
69
|
+
const pid = resolveProjectId(args);
|
|
70
|
+
if (!pid) {
|
|
71
|
+
return missingProjectIdError;
|
|
72
|
+
}
|
|
73
|
+
return handleSnapshotSpecHashes({ ...args, projectId: pid });
|
|
74
|
+
}));
|
|
43
75
|
// auto_reconcile
|
|
44
76
|
server.registerTool('auto_reconcile', {
|
|
45
77
|
description: 'Auto-reconcile specs after code changes. Applies safe changes automatically (completion %, status flip, hash update, timestamp). Unsafe changes (status downgrade, criterion removal) are skipped and require manual approval. Rate-limited: max 1 per spec per 5 minutes.',
|
|
46
78
|
inputSchema: {
|
|
47
|
-
projectId: z.string().max(500).describe('Project ID'),
|
|
79
|
+
projectId: z.string().max(500).optional().describe('Project ID hash. Prefer projectPath.'),
|
|
80
|
+
projectPath: z
|
|
81
|
+
.string()
|
|
82
|
+
.max(4096)
|
|
83
|
+
.optional()
|
|
84
|
+
.describe('Absolute path to project root. Derives projectId automatically.'),
|
|
48
85
|
specId: z
|
|
49
86
|
.string()
|
|
50
87
|
.max(500)
|
|
@@ -56,6 +93,12 @@ export function registerLivingSpecTools(server) {
|
|
|
56
93
|
.optional()
|
|
57
94
|
.describe('List of changed file paths to find affected specs'),
|
|
58
95
|
},
|
|
59
|
-
}, safeLicensed('auto_reconcile', async (args) =>
|
|
96
|
+
}, safeLicensed('auto_reconcile', async (args) => {
|
|
97
|
+
const pid = resolveProjectId(args);
|
|
98
|
+
if (!pid) {
|
|
99
|
+
return missingProjectIdError;
|
|
100
|
+
}
|
|
101
|
+
return handleAutoReconcile({ ...args, projectId: pid });
|
|
102
|
+
}));
|
|
60
103
|
}
|
|
61
104
|
//# sourceMappingURL=register-living-spec-tools.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-living-spec-tools.js","sourceRoot":"","sources":["../../src/tools/register-living-spec-tools.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"register-living-spec-tools.js","sourceRoot":"","sources":["../../src/tools/register-living-spec-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-migration-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-migration-tools.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"register-migration-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-migration-tools.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAiCzE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAiE9D"}
|
|
@@ -3,6 +3,7 @@ import { z } from 'zod';
|
|
|
3
3
|
import { t } from '../i18n/index.js';
|
|
4
4
|
import { handleMigrateTech } from './migrate-tech.js';
|
|
5
5
|
import { safeLicensed } from './safe-handler.js';
|
|
6
|
+
import { resolveProjectId, missingProjectIdError } from './resolve-project-id.js';
|
|
6
7
|
const MigrateTechActionEnum = z.enum([
|
|
7
8
|
'analyze',
|
|
8
9
|
'map',
|
|
@@ -35,12 +36,12 @@ export function registerMigrationTools(server) {
|
|
|
35
36
|
annotations: { readOnlyHint: false },
|
|
36
37
|
inputSchema: {
|
|
37
38
|
action: MigrateTechActionEnum.describe('Migration action: analyze | map | plan | strategy | validate | analyze-db | map-db | plan-db | analyze-services | map-services | plan-services | validate-service | rollback-plan | checkpoint | rollback | feature-flags | status | webpack-to-vite | vite6-to-vite7 | detect-pending'),
|
|
38
|
-
projectId: z.string().max(500).describe('Project ID'),
|
|
39
|
+
projectId: z.string().max(500).optional().describe('Project ID hash. Prefer projectPath.'),
|
|
39
40
|
projectPath: z
|
|
40
41
|
.string()
|
|
41
42
|
.max(4096)
|
|
42
43
|
.optional()
|
|
43
|
-
.describe('Absolute path to project root
|
|
44
|
+
.describe('Absolute path to project root. Derives projectId automatically.'),
|
|
44
45
|
sourceStack: z
|
|
45
46
|
.string()
|
|
46
47
|
.max(500)
|
|
@@ -72,6 +73,12 @@ export function registerMigrationTools(server) {
|
|
|
72
73
|
.optional()
|
|
73
74
|
.describe('ID of a previous analyze result to reuse for plan/strategy actions'),
|
|
74
75
|
},
|
|
75
|
-
}, safeLicensed('migrate_tech', async (args) =>
|
|
76
|
+
}, safeLicensed('migrate_tech', async (args) => {
|
|
77
|
+
const pid = resolveProjectId(args);
|
|
78
|
+
if (!pid) {
|
|
79
|
+
return missingProjectIdError;
|
|
80
|
+
}
|
|
81
|
+
return handleMigrateTech({ ...args, projectId: pid });
|
|
82
|
+
}));
|
|
76
83
|
}
|
|
77
84
|
//# sourceMappingURL=register-migration-tools.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-migration-tools.js","sourceRoot":"","sources":["../../src/tools/register-migration-tools.ts"],"names":[],"mappings":"AAAA,4FAA4F;AAG5F,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,CAAC,EAAE,MAAM,kBAAkB,CAAC;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"register-migration-tools.js","sourceRoot":"","sources":["../../src/tools/register-migration-tools.ts"],"names":[],"mappings":"AAAA,4FAA4F;AAG5F,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,CAAC,EAAE,MAAM,kBAAkB,CAAC;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAElF,MAAM,qBAAqB,GAAG,CAAC,CAAC,IAAI,CAAC;IACnC,SAAS;IACT,KAAK;IACL,MAAM;IACN,UAAU;IACV,UAAU;IACV,YAAY;IACZ,QAAQ;IACR,SAAS;IACT,YAAY;IACZ,kBAAkB;IAClB,cAAc;IACd,eAAe;IACf,kBAAkB;IAClB,eAAe;IACf,YAAY;IACZ,UAAU;IACV,eAAe;IACf,QAAQ;IACR,0CAA0C;IAC1C,iBAAiB;IACjB,gBAAgB;IAChB,+CAA+C;IAC/C,gBAAgB;CACjB,CAAC,CAAC;AAEH,MAAM,UAAU,sBAAsB,CAAC,MAAiB;IACtD,2BAA2B;IAC3B,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;QACE,WAAW,EAAE,CAAC,CAAC,gCAAgC,CAAC;QAChD,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE;QACpC,WAAW,EAAE;YACX,MAAM,EAAE,qBAAqB,CAAC,QAAQ,CACpC,wRAAwR,CACzR;YACD,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,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,GAAG,CAAC,GAAG,CAAC;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,yGAAyG,CAC1G;YACH,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,GAAG,CAAC,GAAG,CAAC;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,oGAAoG,CACrG;YACH,SAAS,EAAE,CAAC;iBACT,MAAM,EAAE;iBACR,GAAG,CAAC,GAAG,CAAC;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,2DAA2D,CAAC;YACxE,cAAc,EAAE,CAAC;iBACd,MAAM,EAAE;iBACR,GAAG,CAAC,GAAG,CAAC;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,yGAAyG,CAC1G;YACH,cAAc,EAAE,CAAC;iBACd,MAAM,EAAE;iBACR,GAAG,CAAC,GAAG,CAAC;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,sDAAsD,CAAC;YACnE,kBAAkB,EAAE,CAAC;iBAClB,MAAM,EAAE;iBACR,GAAG,CAAC,GAAG,CAAC;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,oEAAoE,CAAC;SAClF;KACF,EACD,YAAY,CAAC,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAC1C,MAAM,GAAG,GAAG,gBAAgB,CAAC,IAAoD,CAAC,CAAC;QACnF,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,qBAAqB,CAAC;QAC/B,CAAC;QACD,OAAO,iBAAiB,CAAC,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,GAAG,EAE9C,CAAC,CAAC;IACR,CAAC,CAAC,CACH,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-readiness-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-readiness-tools.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"register-readiness-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-readiness-tools.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AASzE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAyD9D"}
|
|
@@ -5,12 +5,18 @@ import { handleCheckReadiness } from './check-readiness.js';
|
|
|
5
5
|
import { handlePackageHandoff } from './package-handoff.js';
|
|
6
6
|
import { safeLicensed } from './safe-handler.js';
|
|
7
7
|
import { CheckReadinessOutputSchema } from './schemas/index.js';
|
|
8
|
+
import { resolveProjectId, missingProjectIdError } from './resolve-project-id.js';
|
|
8
9
|
export function registerReadinessTools(server) {
|
|
9
10
|
// check_readiness — SPEC-039
|
|
10
11
|
server.registerTool('check_readiness', {
|
|
11
12
|
description: t('tools.check_readiness.description'),
|
|
12
13
|
inputSchema: {
|
|
13
|
-
projectId: z.string().max(500).describe('Project ID'),
|
|
14
|
+
projectId: z.string().max(500).optional().describe('Project ID hash. Prefer projectPath.'),
|
|
15
|
+
projectPath: z
|
|
16
|
+
.string()
|
|
17
|
+
.max(4096)
|
|
18
|
+
.optional()
|
|
19
|
+
.describe('Absolute path to project root. Derives projectId automatically.'),
|
|
14
20
|
specId: z.string().max(500).describe('Spec ID to evaluate'),
|
|
15
21
|
mode: z
|
|
16
22
|
.enum(['strict', 'lenient'])
|
|
@@ -18,14 +24,31 @@ export function registerReadinessTools(server) {
|
|
|
18
24
|
.describe('Evaluation mode: strict (default) requires score >=70; lenient requires >=60'),
|
|
19
25
|
},
|
|
20
26
|
outputSchema: CheckReadinessOutputSchema,
|
|
21
|
-
}, safeLicensed('check_readiness', async (args) =>
|
|
27
|
+
}, safeLicensed('check_readiness', async (args) => {
|
|
28
|
+
const pid = resolveProjectId(args);
|
|
29
|
+
if (!pid) {
|
|
30
|
+
return missingProjectIdError;
|
|
31
|
+
}
|
|
32
|
+
return handleCheckReadiness({ ...args, projectId: pid });
|
|
33
|
+
}));
|
|
22
34
|
// package_handoff — SPEC-039
|
|
23
35
|
server.registerTool('package_handoff', {
|
|
24
36
|
description: t('tools.package_handoff.description'),
|
|
25
37
|
inputSchema: {
|
|
26
|
-
projectId: z.string().max(500).describe('Project ID'),
|
|
38
|
+
projectId: z.string().max(500).optional().describe('Project ID hash. Prefer projectPath.'),
|
|
39
|
+
projectPath: z
|
|
40
|
+
.string()
|
|
41
|
+
.max(4096)
|
|
42
|
+
.optional()
|
|
43
|
+
.describe('Absolute path to project root. Derives projectId automatically.'),
|
|
27
44
|
specId: z.string().max(500).describe('Spec ID to generate handoff package for'),
|
|
28
45
|
},
|
|
29
|
-
}, safeLicensed('package_handoff', async (args) =>
|
|
46
|
+
}, safeLicensed('package_handoff', async (args) => {
|
|
47
|
+
const pid = resolveProjectId(args);
|
|
48
|
+
if (!pid) {
|
|
49
|
+
return missingProjectIdError;
|
|
50
|
+
}
|
|
51
|
+
return handlePackageHandoff({ ...args, projectId: pid });
|
|
52
|
+
}));
|
|
30
53
|
}
|
|
31
54
|
//# sourceMappingURL=register-readiness-tools.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-readiness-tools.js","sourceRoot":"","sources":["../../src/tools/register-readiness-tools.ts"],"names":[],"mappings":"AAAA,qFAAqF;AAGrF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,CAAC,EAAE,MAAM,kBAAkB,CAAC;AACrC,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"register-readiness-tools.js","sourceRoot":"","sources":["../../src/tools/register-readiness-tools.ts"],"names":[],"mappings":"AAAA,qFAAqF;AAGrF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,CAAC,EAAE,MAAM,kBAAkB,CAAC;AACrC,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAElF,MAAM,UAAU,sBAAsB,CAAC,MAAiB;IACtD,6BAA6B;IAC7B,MAAM,CAAC,YAAY,CACjB,iBAAiB,EACjB;QACE,WAAW,EAAE,CAAC,CAAC,mCAAmC,CAAC;QACnD,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,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC;YAC3D,IAAI,EAAE,CAAC;iBACJ,IAAI,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;iBAC3B,QAAQ,EAAE;iBACV,QAAQ,CAAC,8EAA8E,CAAC;SAC5F;QACD,YAAY,EAAE,0BAA0B;KACzC,EACD,YAAY,CAAC,iBAAiB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAC7C,MAAM,GAAG,GAAG,gBAAgB,CAAC,IAAoD,CAAC,CAAC;QACnF,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,qBAAqB,CAAC;QAC/B,CAAC;QACD,OAAO,oBAAoB,CAAC,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,GAAG,EAEjD,CAAC,CAAC;IACR,CAAC,CAAC,CACH,CAAC;IAEF,6BAA6B;IAC7B,MAAM,CAAC,YAAY,CACjB,iBAAiB,EACjB;QACE,WAAW,EAAE,CAAC,CAAC,mCAAmC,CAAC;QACnD,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,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,yCAAyC,CAAC;SAChF;KACF,EACD,YAAY,CAAC,iBAAiB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAC7C,MAAM,GAAG,GAAG,gBAAgB,CAAC,IAAoD,CAAC,CAAC;QACnF,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,qBAAqB,CAAC;QAC/B,CAAC;QACD,OAAO,oBAAoB,CAAC,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,GAAG,EAEjD,CAAC,CAAC;IACR,CAAC,CAAC,CACH,CAAC;AACJ,CAAC"}
|
|
@@ -6,7 +6,7 @@ export function registerScanTools(server) {
|
|
|
6
6
|
description: 'Scan an entire project, discover modules, analyze each in parallel, detect cross-module dependencies and antipatterns, calculate a project health score, and generate specs for every module. Returns ready-to-use team plan for parallel implementation.',
|
|
7
7
|
inputSchema: {
|
|
8
8
|
path: z.string().max(4096).describe('Absolute path to the project root directory'),
|
|
9
|
-
projectId: z.string().max(500).describe('Project ID
|
|
9
|
+
projectId: z.string().max(500).optional().describe('Project ID hash. Prefer projectPath.'),
|
|
10
10
|
depth: z
|
|
11
11
|
.enum(['shallow', 'deep', 'deep-v2'])
|
|
12
12
|
.optional()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-scan-tools.js","sourceRoot":"","sources":["../../src/tools/register-scan-tools.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,UAAU,iBAAiB,CAAC,MAAiB;IACjD,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;QACE,WAAW,EACT,2PAA2P;QAC7P,WAAW,EAAE;YACX,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,6CAA6C,CAAC;YAClF,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"register-scan-tools.js","sourceRoot":"","sources":["../../src/tools/register-scan-tools.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,UAAU,iBAAiB,CAAC,MAAiB;IACjD,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;QACE,WAAW,EACT,2PAA2P;QAC7P,WAAW,EAAE;YACX,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,6CAA6C,CAAC;YAClF,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;YAC1F,KAAK,EAAE,CAAC;iBACL,IAAI,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;iBACpC,QAAQ,EAAE;iBACV,QAAQ,CACP,uIAAuI,CACxI;YACH,OAAO,EAAE,CAAC;iBACP,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;iBACjB,QAAQ,EAAE;iBACV,QAAQ,CACP,qHAAqH,CACtH;YACH,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,EAAE;iBACV,QAAQ,CAAC,gDAAgD,CAAC;YAC7D,gBAAgB,EAAE,CAAC;iBAChB,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CACP,gGAAgG,CACjG;YACH,gBAAgB,EAAE,CAAC;iBAChB,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,2EAA2E,CAAC;SACzF;QACD,WAAW,EAAE;YACX,YAAY,EAAE,KAAK;SACpB;KACF,EACD,YAAY,CAAC,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAwB,CAAC,CAAC,CAC1F,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-scope-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-scope-tools.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"register-scope-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-scope-tools.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAkH1D"}
|