spec-gen-cli 1.2.2 → 1.2.4

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 (141) hide show
  1. package/README.md +272 -25
  2. package/dist/api/generate.d.ts.map +1 -1
  3. package/dist/api/generate.js +11 -7
  4. package/dist/api/generate.js.map +1 -1
  5. package/dist/api/run.d.ts.map +1 -1
  6. package/dist/api/run.js +5 -3
  7. package/dist/api/run.js.map +1 -1
  8. package/dist/api/types.d.ts +4 -4
  9. package/dist/api/types.d.ts.map +1 -1
  10. package/dist/cli/commands/analyze.d.ts.map +1 -1
  11. package/dist/cli/commands/analyze.js +101 -41
  12. package/dist/cli/commands/analyze.js.map +1 -1
  13. package/dist/cli/commands/generate.d.ts.map +1 -1
  14. package/dist/cli/commands/generate.js +28 -23
  15. package/dist/cli/commands/generate.js.map +1 -1
  16. package/dist/cli/commands/mcp.d.ts +353 -10
  17. package/dist/cli/commands/mcp.d.ts.map +1 -1
  18. package/dist/cli/commands/mcp.js +241 -48
  19. package/dist/cli/commands/mcp.js.map +1 -1
  20. package/dist/cli/commands/view.d.ts.map +1 -1
  21. package/dist/cli/commands/view.js +33 -4
  22. package/dist/cli/commands/view.js.map +1 -1
  23. package/dist/constants.d.ts +11 -0
  24. package/dist/constants.d.ts.map +1 -1
  25. package/dist/constants.js +11 -0
  26. package/dist/constants.js.map +1 -1
  27. package/dist/core/analyzer/artifact-generator.d.ts.map +1 -1
  28. package/dist/core/analyzer/artifact-generator.js +11 -3
  29. package/dist/core/analyzer/artifact-generator.js.map +1 -1
  30. package/dist/core/analyzer/ast-chunker.d.ts +24 -0
  31. package/dist/core/analyzer/ast-chunker.d.ts.map +1 -0
  32. package/dist/core/analyzer/ast-chunker.js +198 -0
  33. package/dist/core/analyzer/ast-chunker.js.map +1 -0
  34. package/dist/core/analyzer/call-graph.d.ts +52 -5
  35. package/dist/core/analyzer/call-graph.d.ts.map +1 -1
  36. package/dist/core/analyzer/call-graph.js +769 -48
  37. package/dist/core/analyzer/call-graph.js.map +1 -1
  38. package/dist/core/analyzer/code-shaper.d.ts.map +1 -1
  39. package/dist/core/analyzer/code-shaper.js +5 -0
  40. package/dist/core/analyzer/code-shaper.js.map +1 -1
  41. package/dist/core/analyzer/codebase-digest.d.ts +40 -0
  42. package/dist/core/analyzer/codebase-digest.d.ts.map +1 -0
  43. package/dist/core/analyzer/codebase-digest.js +194 -0
  44. package/dist/core/analyzer/codebase-digest.js.map +1 -0
  45. package/dist/core/analyzer/cpp-header-resolver.d.ts +30 -0
  46. package/dist/core/analyzer/cpp-header-resolver.d.ts.map +1 -0
  47. package/dist/core/analyzer/cpp-header-resolver.js +71 -0
  48. package/dist/core/analyzer/cpp-header-resolver.js.map +1 -0
  49. package/dist/core/analyzer/dependency-graph.d.ts +19 -0
  50. package/dist/core/analyzer/dependency-graph.d.ts.map +1 -1
  51. package/dist/core/analyzer/dependency-graph.js +76 -0
  52. package/dist/core/analyzer/dependency-graph.js.map +1 -1
  53. package/dist/core/analyzer/duplicate-detector.d.ts.map +1 -1
  54. package/dist/core/analyzer/duplicate-detector.js +7 -1
  55. package/dist/core/analyzer/duplicate-detector.js.map +1 -1
  56. package/dist/core/analyzer/function-registry-trie.d.ts +21 -0
  57. package/dist/core/analyzer/function-registry-trie.d.ts.map +1 -0
  58. package/dist/core/analyzer/function-registry-trie.js +39 -0
  59. package/dist/core/analyzer/function-registry-trie.js.map +1 -0
  60. package/dist/core/analyzer/import-resolver-bridge.d.ts +25 -0
  61. package/dist/core/analyzer/import-resolver-bridge.d.ts.map +1 -0
  62. package/dist/core/analyzer/import-resolver-bridge.js +99 -0
  63. package/dist/core/analyzer/import-resolver-bridge.js.map +1 -0
  64. package/dist/core/analyzer/signature-extractor.d.ts.map +1 -1
  65. package/dist/core/analyzer/signature-extractor.js +131 -3
  66. package/dist/core/analyzer/signature-extractor.js.map +1 -1
  67. package/dist/core/analyzer/subgraph-extractor.d.ts +10 -2
  68. package/dist/core/analyzer/subgraph-extractor.d.ts.map +1 -1
  69. package/dist/core/analyzer/subgraph-extractor.js +25 -7
  70. package/dist/core/analyzer/subgraph-extractor.js.map +1 -1
  71. package/dist/core/analyzer/type-inference-engine.d.ts +23 -0
  72. package/dist/core/analyzer/type-inference-engine.d.ts.map +1 -0
  73. package/dist/core/analyzer/type-inference-engine.js +130 -0
  74. package/dist/core/analyzer/type-inference-engine.js.map +1 -0
  75. package/dist/core/analyzer/vector-index.d.ts +35 -6
  76. package/dist/core/analyzer/vector-index.d.ts.map +1 -1
  77. package/dist/core/analyzer/vector-index.js +308 -54
  78. package/dist/core/analyzer/vector-index.js.map +1 -1
  79. package/dist/core/generator/spec-pipeline.d.ts +31 -11
  80. package/dist/core/generator/spec-pipeline.d.ts.map +1 -1
  81. package/dist/core/generator/spec-pipeline.js +170 -39
  82. package/dist/core/generator/spec-pipeline.js.map +1 -1
  83. package/dist/core/generator/stages/stage2-entities.d.ts.map +1 -1
  84. package/dist/core/generator/stages/stage2-entities.js +2 -1
  85. package/dist/core/generator/stages/stage2-entities.js.map +1 -1
  86. package/dist/core/generator/stages/stage3-services.d.ts.map +1 -1
  87. package/dist/core/generator/stages/stage3-services.js +2 -1
  88. package/dist/core/generator/stages/stage3-services.js.map +1 -1
  89. package/dist/core/generator/stages/stage4-api.d.ts.map +1 -1
  90. package/dist/core/generator/stages/stage4-api.js +2 -1
  91. package/dist/core/generator/stages/stage4-api.js.map +1 -1
  92. package/dist/core/generator/stages/stage5-architecture.d.ts +2 -1
  93. package/dist/core/generator/stages/stage5-architecture.d.ts.map +1 -1
  94. package/dist/core/generator/stages/stage5-architecture.js +15 -3
  95. package/dist/core/generator/stages/stage5-architecture.js.map +1 -1
  96. package/dist/core/services/chat-agent.d.ts +5 -0
  97. package/dist/core/services/chat-agent.d.ts.map +1 -1
  98. package/dist/core/services/chat-agent.js +14 -0
  99. package/dist/core/services/chat-agent.js.map +1 -1
  100. package/dist/core/services/chat-tools.d.ts.map +1 -1
  101. package/dist/core/services/chat-tools.js +172 -50
  102. package/dist/core/services/chat-tools.js.map +1 -1
  103. package/dist/core/services/llm-service.d.ts +23 -1
  104. package/dist/core/services/llm-service.d.ts.map +1 -1
  105. package/dist/core/services/llm-service.js +94 -2
  106. package/dist/core/services/llm-service.js.map +1 -1
  107. package/dist/core/services/mcp-handlers/analysis.d.ts +12 -0
  108. package/dist/core/services/mcp-handlers/analysis.d.ts.map +1 -1
  109. package/dist/core/services/mcp-handlers/analysis.js +138 -2
  110. package/dist/core/services/mcp-handlers/analysis.js.map +1 -1
  111. package/dist/core/services/mcp-handlers/graph.d.ts +21 -1
  112. package/dist/core/services/mcp-handlers/graph.d.ts.map +1 -1
  113. package/dist/core/services/mcp-handlers/graph.js +142 -2
  114. package/dist/core/services/mcp-handlers/graph.js.map +1 -1
  115. package/dist/core/services/mcp-handlers/orient.d.ts +17 -0
  116. package/dist/core/services/mcp-handlers/orient.d.ts.map +1 -0
  117. package/dist/core/services/mcp-handlers/orient.js +200 -0
  118. package/dist/core/services/mcp-handlers/orient.js.map +1 -0
  119. package/dist/core/services/mcp-handlers/semantic.d.ts +18 -4
  120. package/dist/core/services/mcp-handlers/semantic.d.ts.map +1 -1
  121. package/dist/core/services/mcp-handlers/semantic.js +161 -17
  122. package/dist/core/services/mcp-handlers/semantic.js.map +1 -1
  123. package/dist/core/services/mcp-handlers/utils.d.ts +43 -0
  124. package/dist/core/services/mcp-handlers/utils.d.ts.map +1 -1
  125. package/dist/core/services/mcp-handlers/utils.js +66 -1
  126. package/dist/core/services/mcp-handlers/utils.js.map +1 -1
  127. package/dist/core/services/mcp-watcher.d.ts +41 -0
  128. package/dist/core/services/mcp-watcher.d.ts.map +1 -0
  129. package/dist/core/services/mcp-watcher.js +177 -0
  130. package/dist/core/services/mcp-watcher.js.map +1 -0
  131. package/dist/types/index.d.ts +2 -2
  132. package/dist/types/index.d.ts.map +1 -1
  133. package/dist/types/pipeline.d.ts +7 -0
  134. package/dist/types/pipeline.d.ts.map +1 -1
  135. package/package.json +4 -2
  136. package/src/viewer/InteractiveGraphViewer.jsx +39 -10
  137. package/src/viewer/components/ChatPanel.jsx +8 -5
  138. package/src/viewer/components/ClassGraph.jsx +782 -0
  139. package/src/viewer/components/FlatGraph.jsx +3 -3
  140. package/src/viewer/utils/graph-helpers.js +9 -1
  141. package/src/viewer/utils/themes.js +36 -0
@@ -22,22 +22,50 @@ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'
22
22
  import { CallToolRequestSchema, ListToolsRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
23
23
  import { sanitizeMcpError, validateDirectory } from '../../core/services/mcp-handlers/utils.js';
24
24
  import { DEFAULT_DRIFT_MAX_FILES } from '../../constants.js';
25
- import { handleGetCallGraph, handleGetSubgraph, handleAnalyzeImpact, handleGetLowRiskRefactorCandidates, handleGetLeafFunctions, handleGetCriticalHubs, handleGetGodFunctions, } from '../../core/services/mcp-handlers/graph.js';
26
- import { handleSearchCode, handleSuggestInsertionPoints, handleSearchSpecs, handleListSpecDomains, } from '../../core/services/mcp-handlers/semantic.js';
27
- import { handleAnalyzeCodebase, handleGetArchitectureOverview, handleGetRefactorReport, handleGetDuplicateReport, handleGetSignatures, handleGetMapping, handleCheckSpecDrift, handleGetFunctionSkeleton, } from '../../core/services/mcp-handlers/analysis.js';
25
+ import { handleGetCallGraph, handleGetSubgraph, handleAnalyzeImpact, handleGetLowRiskRefactorCandidates, handleGetLeafFunctions, handleGetCriticalHubs, handleGetGodFunctions, handleGetFileDependencies, handleTraceExecutionPath, } from '../../core/services/mcp-handlers/graph.js';
26
+ import { handleSearchCode, handleSuggestInsertionPoints, handleSearchSpecs, handleListSpecDomains, handleGetSpec, } from '../../core/services/mcp-handlers/semantic.js';
27
+ import { handleOrient } from '../../core/services/mcp-handlers/orient.js';
28
+ import { handleAnalyzeCodebase, handleGetArchitectureOverview, handleGetRefactorReport, handleGetDuplicateReport, handleGetSignatures, handleGetMapping, handleCheckSpecDrift, handleGetFunctionSkeleton, handleGetFunctionBody, handleGetDecisions, } from '../../core/services/mcp-handlers/analysis.js';
28
29
  // Re-export utilities for tests
29
30
  export { sanitizeMcpError, validateDirectory };
30
31
  // Re-export handlers for use by chat-tools.ts and tests
31
- export { handleGetCallGraph, handleGetSubgraph, handleAnalyzeImpact, handleGetLowRiskRefactorCandidates, handleGetLeafFunctions, handleGetCriticalHubs, handleGetGodFunctions, handleSearchCode, handleSuggestInsertionPoints, handleSearchSpecs, handleAnalyzeCodebase, handleGetArchitectureOverview, handleGetRefactorReport, handleGetDuplicateReport, handleGetSignatures, handleGetMapping, handleCheckSpecDrift, handleGetFunctionSkeleton, };
32
+ export { handleGetCallGraph, handleGetSubgraph, handleAnalyzeImpact, handleGetLowRiskRefactorCandidates, handleGetLeafFunctions, handleGetCriticalHubs, handleGetGodFunctions, handleGetFileDependencies, handleTraceExecutionPath, handleSearchCode, handleSuggestInsertionPoints, handleSearchSpecs, handleAnalyzeCodebase, handleGetArchitectureOverview, handleGetRefactorReport, handleGetDuplicateReport, handleGetSignatures, handleGetMapping, handleCheckSpecDrift, handleGetFunctionSkeleton, };
32
33
  // ============================================================================
33
34
  // TOOL DEFINITIONS
34
35
  // ============================================================================
35
36
  export const TOOL_DEFINITIONS = [
37
+ {
38
+ name: 'orient',
39
+ description: 'START HERE. Call this before any other tool when beginning a new task on an unfamiliar codebase. ' +
40
+ 'Given a natural-language task description, returns in ONE call: relevant functions, source files, ' +
41
+ 'spec domains that cover them, depth-1 call neighbours, top insertion point candidates, ' +
42
+ 'and matching spec sections. Falls back to keyword search if the embedding server is down. ' +
43
+ 'Requires "spec-gen analyze" to have been run at least once.',
44
+ inputSchema: {
45
+ type: 'object',
46
+ properties: {
47
+ directory: {
48
+ type: 'string',
49
+ description: 'Absolute path to the project directory',
50
+ },
51
+ task: {
52
+ type: 'string',
53
+ description: 'Natural language description of the task, e.g. "add rate limiting to the HTTP API"',
54
+ },
55
+ limit: {
56
+ type: 'number',
57
+ description: 'Number of relevant functions to return (default: 5)',
58
+ },
59
+ },
60
+ required: ['directory', 'task'],
61
+ },
62
+ },
36
63
  {
37
64
  name: 'analyze_codebase',
38
- description: 'Run static analysis on a project directory. Extracts repo structure, ' +
39
- 'dependency graph, call graph (hub functions, entry points), and top ' +
40
- 'refactoring priorities — all without an LLM. Results are cached for 1 hour.',
65
+ description: 'USE THIS WHEN: the project has never been analyzed, or the user says the code changed ' +
66
+ 'significantly since the last run, or other tools return "no cache found". ' +
67
+ 'Builds the call graph, dependency graph, and refactor priorities — all without an LLM. ' +
68
+ 'Results are cached for 1 hour; skip this if the cache is recent.',
41
69
  inputSchema: {
42
70
  type: 'object',
43
71
  properties: {
@@ -55,10 +83,9 @@ export const TOOL_DEFINITIONS = [
55
83
  },
56
84
  {
57
85
  name: 'get_architecture_overview',
58
- description: 'Return a high-level architecture map of the project: domain clusters with their ' +
59
- 'key files and roles, cross-cluster dependencies, global entry points, and critical hubs. ' +
60
- 'Start here when onboarding to an unknown codebase or before planning a large feature. ' +
61
- 'Run analyze_codebase first.',
86
+ description: 'USE THIS WHEN: onboarding to an unknown codebase, or before planning a large feature. ' +
87
+ 'Returns domain clusters, cross-cluster dependencies, global entry points, and critical hubs ' +
88
+ 'faster than reading package.json + directory tree yourself. Run analyze_codebase first.',
62
89
  inputSchema: {
63
90
  type: 'object',
64
91
  properties: {
@@ -144,9 +171,11 @@ export const TOOL_DEFINITIONS = [
144
171
  },
145
172
  {
146
173
  name: 'get_subgraph',
147
- description: 'Extract a subgraph of the call graph centred on a specific function. ' +
174
+ description: 'Extract a subgraph of the call graph centred on ONE specific function. ' +
175
+ 'Call once per function — do not combine multiple function names in a single call. ' +
148
176
  'Useful for impact analysis ("what does X call?"), dependency tracing ' +
149
177
  '("who calls X?"), or understanding a change\'s blast radius. ' +
178
+ 'Prefer maxDepth 1 or 2; depth ≥ 3 on large projects may timeout. ' +
150
179
  'Run analyze_codebase first.',
151
180
  inputSchema: {
152
181
  type: 'object',
@@ -157,7 +186,7 @@ export const TOOL_DEFINITIONS = [
157
186
  },
158
187
  functionName: {
159
188
  type: 'string',
160
- description: 'Name of the function to centre the subgraph on (exact or partial match)',
189
+ description: 'Name of a single function to centre the subgraph on (exact name preferred; partial substring also accepted)',
161
190
  },
162
191
  direction: {
163
192
  type: 'string',
@@ -168,7 +197,7 @@ export const TOOL_DEFINITIONS = [
168
197
  },
169
198
  maxDepth: {
170
199
  type: 'number',
171
- description: 'Maximum traversal depth (default: 3)',
200
+ description: 'Maximum traversal depth (default: 3, recommended: 1–2 to avoid timeout)',
172
201
  },
173
202
  format: {
174
203
  type: 'string',
@@ -179,6 +208,40 @@ export const TOOL_DEFINITIONS = [
179
208
  required: ['directory', 'functionName'],
180
209
  },
181
210
  },
211
+ {
212
+ name: 'trace_execution_path',
213
+ description: 'USE THIS WHEN debugging: "how does request X reach function Y?", ' +
214
+ '"which call chain produced this error?", "is there a path from A to B?". ' +
215
+ 'Finds all execution paths between two functions in the call graph (BFS/DFS, ' +
216
+ 'shortest first). Complementary to get_subgraph — use get_subgraph for ' +
217
+ 'neighbourhood exploration, trace_execution_path for point-to-point tracing.',
218
+ inputSchema: {
219
+ type: 'object',
220
+ properties: {
221
+ directory: {
222
+ type: 'string',
223
+ description: 'Absolute path to the project directory',
224
+ },
225
+ entryFunction: {
226
+ type: 'string',
227
+ description: 'Starting function name (exact or partial match)',
228
+ },
229
+ targetFunction: {
230
+ type: 'string',
231
+ description: 'Target function name (exact or partial match)',
232
+ },
233
+ maxDepth: {
234
+ type: 'number',
235
+ description: 'Maximum path length in hops (default: 6)',
236
+ },
237
+ maxPaths: {
238
+ type: 'number',
239
+ description: 'Maximum number of paths to return (default: 10, max: 50)',
240
+ },
241
+ },
242
+ required: ['directory', 'entryFunction', 'targetFunction'],
243
+ },
244
+ },
182
245
  {
183
246
  name: 'get_mapping',
184
247
  description: 'Return the requirement → function mapping produced by spec-gen generate. ' +
@@ -206,11 +269,10 @@ export const TOOL_DEFINITIONS = [
206
269
  },
207
270
  {
208
271
  name: 'check_spec_drift',
209
- description: 'Detect spec drift: identify code changes that are not reflected in the ' +
210
- 'project\'s OpenSpec specifications. Compares git-changed files against ' +
211
- 'spec coverage maps. Returns issues categorised as gap, stale, uncovered, ' +
212
- 'or orphaned-spec. Requires spec-gen generate to have been run at least once. ' +
213
- 'Runs in static mode (no LLM required).',
272
+ description: 'USE THIS WHEN: you\'ve modified code and want to know if the specs are still aligned, ' +
273
+ 'or when asked "is the code in sync with the spec?", "what changed since the last spec run?". ' +
274
+ 'Compares git-changed files against spec coverage impossible to replicate by reading files. ' +
275
+ 'Requires spec-gen generate to have been run at least once. No LLM required.',
214
276
  inputSchema: {
215
277
  type: 'object',
216
278
  properties: {
@@ -247,10 +309,10 @@ export const TOOL_DEFINITIONS = [
247
309
  },
248
310
  {
249
311
  name: 'analyze_impact',
250
- description: 'Deep impact analysis for a specific function or symbol. Returns fan-in, fan-out, ' +
251
- 'upstream call chain, downstream critical path, a risk score (0–100), blast radius ' +
252
- 'estimation, and a recommended refactoring strategy. Use this before touching any ' +
253
- 'function to understand the full consequences. Run analyze_codebase first.',
312
+ description: 'USE THIS WHEN: you\'re about to modify a function and want to know the full consequences — ' +
313
+ '"what breaks if I change X?", "what\'s the blast radius of modifying Y?". ' +
314
+ 'Returns fan-in/out, full call chains, risk score (0–100), and refactoring strategy. ' +
315
+ 'Call this before touching any non-trivial function. Run analyze_codebase first.',
254
316
  inputSchema: {
255
317
  type: 'object',
256
318
  properties: {
@@ -399,12 +461,11 @@ export const TOOL_DEFINITIONS = [
399
461
  },
400
462
  {
401
463
  name: 'suggest_insertion_points',
402
- description: 'Find the best places in the codebase to implement a new feature described in natural language. ' +
403
- 'Combines semantic similarity with structural analysis (entry points, orchestrators, hubs) ' +
404
- 'to return ranked insertion candidates with an actionable strategy for each. ' +
405
- 'Ideal before implementing a feature: run this first, then use get_subgraph or ' +
406
- 'get_function_skeleton on the top candidates to understand the local context. ' +
407
- 'Requires a vector index built with "spec-gen analyze --embed".',
464
+ description: 'USE THIS WHEN: you need to find where to implement a new feature ' +
465
+ '"where should I add rate limiting?", "where\'s the best place to add email validation?". ' +
466
+ 'Combines semantic search + call graph to return ranked candidates with strategy. ' +
467
+ 'Call this before writing any code; then use get_subgraph on the top candidates. ' +
468
+ 'Requires "spec-gen analyze --embed".',
408
469
  inputSchema: {
409
470
  type: 'object',
410
471
  properties: {
@@ -431,12 +492,11 @@ export const TOOL_DEFINITIONS = [
431
492
  },
432
493
  {
433
494
  name: 'search_code',
434
- description: 'Semantic search over indexed functions using a natural language query. ' +
435
- 'Returns the closest functions by meaning useful for finding implementations, ' +
436
- 'understanding how a concept is handled, or navigating unfamiliar codebases. ' +
437
- 'Requires a vector index built with "spec-gen analyze --embed". ' +
438
- 'Configure the embedding endpoint via EMBED_BASE_URL + EMBED_MODEL env vars ' +
439
- 'or the "embedding" section in .spec-gen/config.json.',
495
+ description: 'USE THIS WHEN: you don\'t know which file or function handles a concept ' +
496
+ '"where is rate limiting implemented?", "which function validates tokens?", ' +
497
+ '"what handles authentication?". Beats grep when the function name is unknown. ' +
498
+ 'Falls back to keyword search automatically if the embedding server is down. ' +
499
+ 'Requires "spec-gen analyze --embed" to have been run at least once.',
440
500
  inputSchema: {
441
501
  type: 'object',
442
502
  properties: {
@@ -478,13 +538,10 @@ export const TOOL_DEFINITIONS = [
478
538
  },
479
539
  {
480
540
  name: 'search_specs',
481
- description: 'Semantic search over OpenSpec specifications to find requirements, design notes, ' +
482
- 'and architecture decisions by meaning. Returns linked source files for graph highlighting. ' +
483
- 'Use this when asked "which spec covers X?", "what requirement describes Y?", ' +
484
- 'or "where should we implement Z?" (spec-first approach). ' +
485
- 'Requires a spec index built with "spec-gen analyze --embed" or "spec-gen analyze --reindex-specs". ' +
486
- 'Configure the embedding endpoint via EMBED_BASE_URL + EMBED_MODEL env vars ' +
487
- 'or the "embedding" section in .spec-gen/config.json.',
541
+ description: 'USE THIS WHEN: asked "which spec covers X?", "what does the spec say about Y?", ' +
542
+ '"which requirement describes Z?". Searches specs by meaning and returns linked source files. ' +
543
+ 'Use spec-first: check what the spec says before reading or writing code. ' +
544
+ 'Requires "spec-gen analyze --embed" or "spec-gen analyze --reindex-specs".',
488
545
  inputSchema: {
489
546
  type: 'object',
490
547
  properties: {
@@ -512,20 +569,120 @@ export const TOOL_DEFINITIONS = [
512
569
  required: ['directory', 'query'],
513
570
  },
514
571
  },
572
+ {
573
+ name: 'get_spec',
574
+ description: 'Return the full content of a spec domain\'s specification file (spec.md) and the ' +
575
+ 'functions that implement it. Use this to read requirements directly when you know the ' +
576
+ 'domain name. Complements search_specs (which searches by meaning) by giving exact ' +
577
+ 'read access to a known domain.',
578
+ inputSchema: {
579
+ type: 'object',
580
+ properties: {
581
+ directory: { type: 'string', description: 'Absolute path to the project directory' },
582
+ domain: {
583
+ type: 'string',
584
+ description: 'Domain name as returned by list_spec_domains (e.g. "auth", "analyzer")',
585
+ },
586
+ },
587
+ required: ['directory', 'domain'],
588
+ },
589
+ },
590
+ {
591
+ name: 'get_function_body',
592
+ description: 'Return the exact source code of a named function in a file. ' +
593
+ 'Use this after search_code or get_function_skeleton to read the full implementation. ' +
594
+ 'Requires a prior "spec-gen analyze" run for precise byte-range extraction; ' +
595
+ 'falls back to a brace-depth scan when the call graph is unavailable.',
596
+ inputSchema: {
597
+ type: 'object',
598
+ properties: {
599
+ directory: { type: 'string', description: 'Absolute path to the project directory' },
600
+ filePath: {
601
+ type: 'string',
602
+ description: 'File path relative to the project directory, e.g. "src/auth/jwt.ts"',
603
+ },
604
+ functionName: {
605
+ type: 'string',
606
+ description: 'Name of the function to extract, e.g. "verifyToken"',
607
+ },
608
+ },
609
+ required: ['directory', 'filePath', 'functionName'],
610
+ },
611
+ },
612
+ {
613
+ name: 'get_file_dependencies',
614
+ description: 'Return the file-level import dependencies for a given source file. ' +
615
+ 'Answers "what does this file import?" and "what files import this file?". ' +
616
+ 'Useful for planning refactors, understanding coupling, or scoping the blast radius ' +
617
+ 'of a change. Reads the dependency-graph.json produced by "spec-gen analyze".',
618
+ inputSchema: {
619
+ type: 'object',
620
+ properties: {
621
+ directory: { type: 'string', description: 'Absolute path to the project directory' },
622
+ filePath: {
623
+ type: 'string',
624
+ description: 'File path relative to the project root, e.g. "src/core/analyzer/vector-index.ts"',
625
+ },
626
+ direction: {
627
+ type: 'string',
628
+ enum: ['imports', 'importedBy', 'both'],
629
+ description: '"imports" = what this file depends on, "importedBy" = what depends on this file, "both" = both directions (default)',
630
+ },
631
+ },
632
+ required: ['directory', 'filePath'],
633
+ },
634
+ },
635
+ {
636
+ name: 'get_decisions',
637
+ description: 'List or search Architecture Decision Records (ADRs) stored in openspec/decisions/. ' +
638
+ 'Use this when you need to understand why an architectural decision was made, ' +
639
+ 'or to check whether a pattern is already documented. ' +
640
+ 'ADRs are generated by "spec-gen generate --adrs".',
641
+ inputSchema: {
642
+ type: 'object',
643
+ properties: {
644
+ directory: { type: 'string', description: 'Absolute path to the project directory' },
645
+ query: {
646
+ type: 'string',
647
+ description: 'Optional text filter — returns only ADRs whose title or content contains this string',
648
+ },
649
+ },
650
+ required: ['directory'],
651
+ },
652
+ },
515
653
  ];
516
- // ============================================================================
517
- // MCP SERVER
518
- // ============================================================================
519
- async function startMcpServer() {
654
+ async function startMcpServer(options = {}) {
520
655
  const server = new Server({ name: 'spec-gen', version: '1.0.0' }, { capabilities: { tools: {} } });
521
656
  server.setRequestHandler(ListToolsRequestSchema, async () => ({
522
657
  tools: TOOL_DEFINITIONS,
523
658
  }));
659
+ // --watch-auto: start the watcher on the first tool call that carries a directory
660
+ let autoWatcher;
524
661
  server.setRequestHandler(CallToolRequestSchema, async (request) => {
525
662
  const { name, arguments: args = {} } = request.params;
663
+ if (options.watchAuto && !autoWatcher) {
664
+ const dir = args.directory;
665
+ if (typeof dir === 'string') {
666
+ const { resolve } = await import('node:path');
667
+ const { McpWatcher } = await import('../../core/services/mcp-watcher.js');
668
+ const debounceMs = parseInt(options.watchDebounce ?? '400', 10);
669
+ autoWatcher = new McpWatcher({
670
+ rootPath: resolve(dir),
671
+ debounceMs: isNaN(debounceMs) ? 400 : debounceMs,
672
+ });
673
+ await autoWatcher.start();
674
+ const cleanup = () => autoWatcher.stop().then(() => process.exit(0));
675
+ process.on('SIGINT', cleanup);
676
+ process.on('SIGTERM', cleanup);
677
+ }
678
+ }
526
679
  try {
527
680
  let result;
528
- if (name === 'analyze_codebase') {
681
+ if (name === 'orient') {
682
+ const { directory, task, limit = 5 } = args;
683
+ result = await handleOrient(directory, task, limit);
684
+ }
685
+ else if (name === 'analyze_codebase') {
529
686
  const { directory, force = false } = args;
530
687
  result = await handleAnalyzeCodebase(directory, force);
531
688
  }
@@ -549,6 +706,10 @@ async function startMcpServer() {
549
706
  const { directory, functionName, direction = 'downstream', maxDepth = 3, format = 'json' } = args;
550
707
  result = await handleGetSubgraph(directory, functionName, direction, maxDepth, format);
551
708
  }
709
+ else if (name === 'trace_execution_path') {
710
+ const { directory, entryFunction, targetFunction, maxDepth = 6, maxPaths = 10 } = args;
711
+ result = await handleTraceExecutionPath(directory, entryFunction, targetFunction, maxDepth, maxPaths);
712
+ }
552
713
  else if (name === 'get_mapping') {
553
714
  const { directory, domain, orphansOnly } = args;
554
715
  result = await handleGetMapping(directory, domain, orphansOnly);
@@ -601,6 +762,22 @@ async function startMcpServer() {
601
762
  const { directory } = args;
602
763
  result = await handleListSpecDomains(directory);
603
764
  }
765
+ else if (name === 'get_spec') {
766
+ const { directory, domain } = args;
767
+ result = await handleGetSpec(directory, domain);
768
+ }
769
+ else if (name === 'get_function_body') {
770
+ const { directory, filePath, functionName } = args;
771
+ result = await handleGetFunctionBody(directory, filePath, functionName);
772
+ }
773
+ else if (name === 'get_file_dependencies') {
774
+ const { directory, filePath, direction = 'both' } = args;
775
+ result = await handleGetFileDependencies(directory, filePath, direction);
776
+ }
777
+ else if (name === 'get_decisions') {
778
+ const { directory, query } = args;
779
+ result = await handleGetDecisions(directory, query);
780
+ }
604
781
  else {
605
782
  return {
606
783
  content: [{ type: 'text', text: `Unknown tool: ${name}` }],
@@ -621,11 +798,27 @@ async function startMcpServer() {
621
798
  });
622
799
  const transport = new StdioServerTransport();
623
800
  await server.connect(transport);
801
+ if (options.watch) {
802
+ const { resolve } = await import('node:path');
803
+ const { McpWatcher } = await import('../../core/services/mcp-watcher.js');
804
+ const debounceMs = parseInt(options.watchDebounce ?? '400', 10);
805
+ const watcher = new McpWatcher({
806
+ rootPath: resolve(options.watch),
807
+ debounceMs: isNaN(debounceMs) ? 400 : debounceMs,
808
+ });
809
+ await watcher.start();
810
+ const cleanup = () => watcher.stop().then(() => process.exit(0));
811
+ process.on('SIGINT', cleanup);
812
+ process.on('SIGTERM', cleanup);
813
+ }
624
814
  }
625
815
  // ============================================================================
626
816
  // COMMAND EXPORT
627
817
  // ============================================================================
628
818
  export const mcpCommand = new Command('mcp')
629
819
  .description('Start spec-gen as an MCP server (stdio transport, for Cline/Claude Code)')
630
- .action(startMcpServer);
820
+ .option('--watch <directory>', 'Watch a project directory and incrementally re-index signatures on file changes')
821
+ .option('--watch-auto', 'Auto-detect the project directory from the first tool call and start watching (recommended for Cline/Claude Code)', false)
822
+ .option('--watch-debounce <ms>', 'Debounce delay in ms before re-indexing after a file change (default: 400)', '400')
823
+ .action((options) => startMcpServer(options));
631
824
  //# sourceMappingURL=mcp.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../../src/cli/commands/mcp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../../src/cli/commands/mcp.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/view.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyBpC,kGAAkG;AAClG,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAUxD;AAED,qFAAqF;AACrF,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAO1E;AAYD,eAAO,MAAM,WAAW,SAogBrB,CAAC"}
1
+ {"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/view.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyBpC,kGAAkG;AAClG,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAUxD;AAED,qFAAqF;AACrF,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAO1E;AAYD,eAAO,MAAM,WAAW,SAgiBrB,CAAC"}
@@ -126,6 +126,29 @@ export const viewCommand = new Command('view')
126
126
  res.end(JSON.stringify({ error: sanitizeErrorMessage(err.message) }));
127
127
  }
128
128
  });
129
+ devServer.middlewares.use('/api/class-graph', async (_req, res) => {
130
+ try {
131
+ if (!(await fileExists(llmContextPath))) {
132
+ res.statusCode = 404;
133
+ res.end(JSON.stringify({ error: 'llm-context.json not found' }));
134
+ return;
135
+ }
136
+ const raw = JSON.parse(await readFile(llmContextPath, 'utf-8'));
137
+ const cg = raw.callGraph ?? {};
138
+ res.setHeader('Content-Type', 'application/json; charset=utf-8');
139
+ res.statusCode = 200;
140
+ res.end(JSON.stringify({
141
+ classes: cg.classes ?? [],
142
+ inheritanceEdges: cg.inheritanceEdges ?? [],
143
+ edges: cg.edges ?? [],
144
+ nodes: cg.nodes ?? [],
145
+ }));
146
+ }
147
+ catch (err) {
148
+ res.statusCode = 500;
149
+ res.end(JSON.stringify({ error: sanitizeErrorMessage(err.message) }));
150
+ }
151
+ });
129
152
  devServer.middlewares.use('/api/refactor-priorities', async (_req, res) => {
130
153
  try {
131
154
  if (!(await fileExists(refactorPath))) {
@@ -400,10 +423,16 @@ export const viewCommand = new Command('view')
400
423
  });
401
424
  if (abortController.signal.aborted)
402
425
  return;
403
- const highlightIds = filePaths
404
- .map(p => pathToNodeId.get(normalise(p)))
405
- .filter((id) => Boolean(id));
406
- sendEvent({ type: 'reply', reply, highlightIds, filePaths });
426
+ const highlightIds = [];
427
+ const highlightPaths = [];
428
+ for (const p of filePaths) {
429
+ const id = pathToNodeId.get(normalise(p));
430
+ if (id) {
431
+ highlightIds.push(id);
432
+ highlightPaths.push(p);
433
+ }
434
+ }
435
+ sendEvent({ type: 'reply', reply, highlightIds, filePaths: highlightPaths });
407
436
  res.end();
408
437
  }
409
438
  catch (err) {