@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.
Files changed (116) hide show
  1. package/dist/config/license-plans.json +1 -0
  2. package/dist/engine/telemetry/error-reporter.d.ts +6 -0
  3. package/dist/engine/telemetry/error-reporter.d.ts.map +1 -1
  4. package/dist/engine/telemetry/error-reporter.js +22 -0
  5. package/dist/engine/telemetry/error-reporter.js.map +1 -1
  6. package/dist/engine/token-savings-calculator.d.ts +3 -0
  7. package/dist/engine/token-savings-calculator.d.ts.map +1 -0
  8. package/dist/engine/token-savings-calculator.js +115 -0
  9. package/dist/engine/token-savings-calculator.js.map +1 -0
  10. package/dist/tools/audit-trail-handler.d.ts +6 -2
  11. package/dist/tools/audit-trail-handler.d.ts.map +1 -1
  12. package/dist/tools/audit-trail-handler.js +12 -9
  13. package/dist/tools/audit-trail-handler.js.map +1 -1
  14. package/dist/tools/check-readiness.d.ts +3 -1
  15. package/dist/tools/check-readiness.d.ts.map +1 -1
  16. package/dist/tools/check-readiness.js +9 -1
  17. package/dist/tools/check-readiness.js.map +1 -1
  18. package/dist/tools/data-governance.d.ts +3 -1
  19. package/dist/tools/data-governance.d.ts.map +1 -1
  20. package/dist/tools/data-governance.js +9 -1
  21. package/dist/tools/data-governance.js.map +1 -1
  22. package/dist/tools/register-audit-trail-tools.d.ts.map +1 -1
  23. package/dist/tools/register-audit-trail-tools.js +27 -4
  24. package/dist/tools/register-audit-trail-tools.js.map +1 -1
  25. package/dist/tools/register-backlog-tools.d.ts.map +1 -1
  26. package/dist/tools/register-backlog-tools.js +24 -8
  27. package/dist/tools/register-backlog-tools.js.map +1 -1
  28. package/dist/tools/register-ci-tools.d.ts.map +1 -1
  29. package/dist/tools/register-ci-tools.js +27 -5
  30. package/dist/tools/register-ci-tools.js.map +1 -1
  31. package/dist/tools/register-coverage-tools.d.ts.map +1 -1
  32. package/dist/tools/register-coverage-tools.js +14 -2
  33. package/dist/tools/register-coverage-tools.js.map +1 -1
  34. package/dist/tools/register-domain-criteria-tools.d.ts.map +1 -1
  35. package/dist/tools/register-domain-criteria-tools.js +27 -4
  36. package/dist/tools/register-domain-criteria-tools.js.map +1 -1
  37. package/dist/tools/register-elicitation-tools.d.ts.map +1 -1
  38. package/dist/tools/register-elicitation-tools.js +14 -2
  39. package/dist/tools/register-elicitation-tools.js.map +1 -1
  40. package/dist/tools/register-event-tools.d.ts.map +1 -1
  41. package/dist/tools/register-event-tools.js +14 -2
  42. package/dist/tools/register-event-tools.js.map +1 -1
  43. package/dist/tools/register-federation-tools.d.ts.map +1 -1
  44. package/dist/tools/register-federation-tools.js +27 -4
  45. package/dist/tools/register-federation-tools.js.map +1 -1
  46. package/dist/tools/register-governance-tools.d.ts.map +1 -1
  47. package/dist/tools/register-governance-tools.js +27 -4
  48. package/dist/tools/register-governance-tools.js.map +1 -1
  49. package/dist/tools/register-hooks-tools.d.ts.map +1 -1
  50. package/dist/tools/register-hooks-tools.js +14 -2
  51. package/dist/tools/register-hooks-tools.js.map +1 -1
  52. package/dist/tools/register-infrastructure-tools.d.ts.map +1 -1
  53. package/dist/tools/register-infrastructure-tools.js +17 -2
  54. package/dist/tools/register-infrastructure-tools.js.map +1 -1
  55. package/dist/tools/register-lessons-tools.d.ts.map +1 -1
  56. package/dist/tools/register-lessons-tools.js +12 -4
  57. package/dist/tools/register-lessons-tools.js.map +1 -1
  58. package/dist/tools/register-living-spec-advanced-tools.d.ts.map +1 -1
  59. package/dist/tools/register-living-spec-advanced-tools.js +92 -16
  60. package/dist/tools/register-living-spec-advanced-tools.js.map +1 -1
  61. package/dist/tools/register-living-spec-tools.d.ts.map +1 -1
  62. package/dist/tools/register-living-spec-tools.js +53 -10
  63. package/dist/tools/register-living-spec-tools.js.map +1 -1
  64. package/dist/tools/register-migration-tools.d.ts.map +1 -1
  65. package/dist/tools/register-migration-tools.js +10 -3
  66. package/dist/tools/register-migration-tools.js.map +1 -1
  67. package/dist/tools/register-readiness-tools.d.ts.map +1 -1
  68. package/dist/tools/register-readiness-tools.js +27 -4
  69. package/dist/tools/register-readiness-tools.js.map +1 -1
  70. package/dist/tools/register-scan-tools.js +1 -1
  71. package/dist/tools/register-scan-tools.js.map +1 -1
  72. package/dist/tools/register-scope-tools.d.ts.map +1 -1
  73. package/dist/tools/register-scope-tools.js +27 -4
  74. package/dist/tools/register-scope-tools.js.map +1 -1
  75. package/dist/tools/register-search-tools.d.ts.map +1 -1
  76. package/dist/tools/register-search-tools.js +14 -2
  77. package/dist/tools/register-search-tools.js.map +1 -1
  78. package/dist/tools/register-security-tools.d.ts.map +1 -1
  79. package/dist/tools/register-security-tools.js +14 -2
  80. package/dist/tools/register-security-tools.js.map +1 -1
  81. package/dist/tools/register-spec-observability-tools.d.ts.map +1 -1
  82. package/dist/tools/register-spec-observability-tools.js +14 -2
  83. package/dist/tools/register-spec-observability-tools.js.map +1 -1
  84. package/dist/tools/register-spec-split-tools.d.ts.map +1 -1
  85. package/dist/tools/register-spec-split-tools.js +26 -6
  86. package/dist/tools/register-spec-split-tools.js.map +1 -1
  87. package/dist/tools/register-stack-tools.d.ts.map +1 -1
  88. package/dist/tools/register-stack-tools.js +40 -9
  89. package/dist/tools/register-stack-tools.js.map +1 -1
  90. package/dist/tools/register-team-tools.d.ts.map +1 -1
  91. package/dist/tools/register-team-tools.js +38 -6
  92. package/dist/tools/register-team-tools.js.map +1 -1
  93. package/dist/tools/register-telemetry-tools.d.ts.map +1 -1
  94. package/dist/tools/register-telemetry-tools.js +6 -1
  95. package/dist/tools/register-telemetry-tools.js.map +1 -1
  96. package/dist/tools/register-token-tools.d.ts.map +1 -1
  97. package/dist/tools/register-token-tools.js +18 -0
  98. package/dist/tools/register-token-tools.js.map +1 -1
  99. package/dist/tools/register-versioning-tools.d.ts.map +1 -1
  100. package/dist/tools/register-versioning-tools.js +66 -13
  101. package/dist/tools/register-versioning-tools.js.map +1 -1
  102. package/dist/tools/resolve-project-id.d.ts +13 -0
  103. package/dist/tools/resolve-project-id.d.ts.map +1 -0
  104. package/dist/tools/resolve-project-id.js +22 -0
  105. package/dist/tools/resolve-project-id.js.map +1 -0
  106. package/dist/tools/safe-handler.d.ts.map +1 -1
  107. package/dist/tools/safe-handler.js +7 -2
  108. package/dist/tools/safe-handler.js.map +1 -1
  109. package/dist/tools/token-savings-handler.d.ts +7 -0
  110. package/dist/tools/token-savings-handler.d.ts.map +1 -0
  111. package/dist/tools/token-savings-handler.js +39 -0
  112. package/dist/tools/token-savings-handler.js.map +1 -0
  113. package/dist/types/token-ledger.d.ts +23 -0
  114. package/dist/types/token-ledger.d.ts.map +1 -1
  115. package/package.json +1 -1
  116. 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;AAEhD,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,CAAC,gCAAgC,CAAC;YACzE,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,CACpD,4BAA4B,CAAC,IAAmC,CAAC,CAClE,CACF,CAAC;AACJ,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,CA6D5D"}
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().min(1).describe('Project ID.'),
22
- projectPath: z.string().min(1).describe('Absolute path to the project root.'),
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().min(1).describe('Project ID.'),
46
- projectPath: z.string().min(1).describe('Absolute path to the project root.'),
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":"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"}
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;AAUzE;;GAEG;AACH,wBAAgB,+BAA+B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA4IvE"}
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) => handleLivingSpecWatch(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) => handleLivingSpecStatus(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) => handleSpecDiff(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) => handleLivingSpecCoverage(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) => handleSyncSpecToCode(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) => handleSyncCodeToSpec(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) => handleResolveSyncConflict(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":"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"}
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;AAQzE;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA2E/D"}
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.string().max(4096).describe('Path to the project root directory'),
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) => handleValidateAnnotations(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.string().max(4096).describe('Path to the project root directory'),
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) => handleGenerateAnnotations(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) => handleSnapshotSpecHashes(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) => handleAutoReconcile(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":"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"}
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;AAC1D,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAElF;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,MAAiB;IACvD,uBAAuB;IACvB,MAAM,CAAC,YAAY,CACjB,sBAAsB,EACtB;QACE,WAAW,EACT,yKAAyK;QAC3K,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,EAAE;iBACV,QAAQ,CAAC,4DAA4D,CAAC;SAC1E;KACF,EACD,YAAY,CAAC,sBAAsB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAClD,MAAM,GAAG,GAAG,gBAAgB,CAAC,IAAoD,CAAC,CAAC;QACnF,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,qBAAqB,CAAC;QAC/B,CAAC;QACD,OAAO,yBAAyB,CAAC,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,GAAG,EAEtD,CAAC,CAAC;IACR,CAAC,CAAC,CACH,CAAC;IAEF,uBAAuB;IACvB,MAAM,CAAC,YAAY,CACjB,sBAAsB,EACtB;QACE,WAAW,EACT,wKAAwK;QAC1K,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,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,qCAAqC,CAAC;SAC5E;KACF,EACD,YAAY,CAAC,sBAAsB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAClD,MAAM,GAAG,GAAG,gBAAgB,CAAC,IAAoD,CAAC,CAAC;QACnF,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,qBAAqB,CAAC;QAC/B,CAAC;QACD,OAAO,yBAAyB,CAAC,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,GAAG,EAEtD,CAAC,CAAC;IACR,CAAC,CAAC,CACH,CAAC;IAEF,uBAAuB;IACvB,MAAM,CAAC,YAAY,CACjB,sBAAsB,EACtB;QACE,WAAW,EACT,wMAAwM;QAC1M,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;SAC5D;KACF,EACD,YAAY,CAAC,sBAAsB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAClD,MAAM,GAAG,GAAG,gBAAgB,CAAC,IAAoD,CAAC,CAAC;QACnF,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,qBAAqB,CAAC;QAC/B,CAAC;QACD,OAAO,wBAAwB,CAAC,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,GAAG,EAErD,CAAC,CAAC;IACR,CAAC,CAAC,CACH,CAAC;IAEF,iBAAiB;IACjB,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;QACE,WAAW,EACT,4QAA4Q;QAC9Q,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,EAAE;iBACV,QAAQ,CACP,oFAAoF,CACrF;YACH,YAAY,EAAE,CAAC;iBACZ,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;iBAC3B,GAAG,CAAC,IAAI,CAAC;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,mDAAmD,CAAC;SACjE;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-migration-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-migration-tools.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAgCzE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAyD9D"}
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 (for analyze action)'),
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) => handleMigrateTech(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;AAEjD,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,CAAC,YAAY,CAAC;YACrD,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,GAAG,CAAC,IAAI,CAAC;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,oDAAoD,CAAC;YACjE,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,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CACtE,CAAC;AACJ,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;AAQzE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA+B9D"}
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) => handleCheckReadiness(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) => handlePackageHandoff(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;AAEhE,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,CAAC,YAAY,CAAC;YACrD,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,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAC5E,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,CAAC,YAAY,CAAC;YACrD,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,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAC5E,CAAC;AACJ,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 (from init_project)'),
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,gCAAgC,CAAC;YACzE,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
+ {"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;AAMzE;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAwF1D"}
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"}