spec-gen-cli 1.2.1 → 1.2.3

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 (132) hide show
  1. package/README.md +197 -11
  2. package/dist/api/generate.d.ts.map +1 -1
  3. package/dist/api/generate.js +5 -4
  4. package/dist/api/generate.js.map +1 -1
  5. package/dist/cli/commands/analyze.d.ts.map +1 -1
  6. package/dist/cli/commands/analyze.js +101 -41
  7. package/dist/cli/commands/analyze.js.map +1 -1
  8. package/dist/cli/commands/generate.d.ts.map +1 -1
  9. package/dist/cli/commands/generate.js +25 -21
  10. package/dist/cli/commands/generate.js.map +1 -1
  11. package/dist/cli/commands/mcp.d.ts +353 -10
  12. package/dist/cli/commands/mcp.d.ts.map +1 -1
  13. package/dist/cli/commands/mcp.js +236 -45
  14. package/dist/cli/commands/mcp.js.map +1 -1
  15. package/dist/cli/commands/view.d.ts.map +1 -1
  16. package/dist/cli/commands/view.js +33 -4
  17. package/dist/cli/commands/view.js.map +1 -1
  18. package/dist/constants.d.ts +10 -0
  19. package/dist/constants.d.ts.map +1 -1
  20. package/dist/constants.js +10 -0
  21. package/dist/constants.js.map +1 -1
  22. package/dist/core/analyzer/ast-chunker.d.ts +24 -0
  23. package/dist/core/analyzer/ast-chunker.d.ts.map +1 -0
  24. package/dist/core/analyzer/ast-chunker.js +198 -0
  25. package/dist/core/analyzer/ast-chunker.js.map +1 -0
  26. package/dist/core/analyzer/call-graph.d.ts +51 -4
  27. package/dist/core/analyzer/call-graph.d.ts.map +1 -1
  28. package/dist/core/analyzer/call-graph.js +634 -44
  29. package/dist/core/analyzer/call-graph.js.map +1 -1
  30. package/dist/core/analyzer/code-shaper.d.ts.map +1 -1
  31. package/dist/core/analyzer/code-shaper.js +5 -0
  32. package/dist/core/analyzer/code-shaper.js.map +1 -1
  33. package/dist/core/analyzer/codebase-digest.d.ts +40 -0
  34. package/dist/core/analyzer/codebase-digest.d.ts.map +1 -0
  35. package/dist/core/analyzer/codebase-digest.js +194 -0
  36. package/dist/core/analyzer/codebase-digest.js.map +1 -0
  37. package/dist/core/analyzer/cpp-header-resolver.d.ts +30 -0
  38. package/dist/core/analyzer/cpp-header-resolver.d.ts.map +1 -0
  39. package/dist/core/analyzer/cpp-header-resolver.js +71 -0
  40. package/dist/core/analyzer/cpp-header-resolver.js.map +1 -0
  41. package/dist/core/analyzer/function-registry-trie.d.ts +21 -0
  42. package/dist/core/analyzer/function-registry-trie.d.ts.map +1 -0
  43. package/dist/core/analyzer/function-registry-trie.js +39 -0
  44. package/dist/core/analyzer/function-registry-trie.js.map +1 -0
  45. package/dist/core/analyzer/import-resolver-bridge.d.ts +25 -0
  46. package/dist/core/analyzer/import-resolver-bridge.d.ts.map +1 -0
  47. package/dist/core/analyzer/import-resolver-bridge.js +99 -0
  48. package/dist/core/analyzer/import-resolver-bridge.js.map +1 -0
  49. package/dist/core/analyzer/signature-extractor.d.ts.map +1 -1
  50. package/dist/core/analyzer/signature-extractor.js +72 -3
  51. package/dist/core/analyzer/signature-extractor.js.map +1 -1
  52. package/dist/core/analyzer/subgraph-extractor.d.ts +10 -2
  53. package/dist/core/analyzer/subgraph-extractor.d.ts.map +1 -1
  54. package/dist/core/analyzer/subgraph-extractor.js +25 -7
  55. package/dist/core/analyzer/subgraph-extractor.js.map +1 -1
  56. package/dist/core/analyzer/type-inference-engine.d.ts +23 -0
  57. package/dist/core/analyzer/type-inference-engine.d.ts.map +1 -0
  58. package/dist/core/analyzer/type-inference-engine.js +130 -0
  59. package/dist/core/analyzer/type-inference-engine.js.map +1 -0
  60. package/dist/core/analyzer/vector-index.d.ts +35 -6
  61. package/dist/core/analyzer/vector-index.d.ts.map +1 -1
  62. package/dist/core/analyzer/vector-index.js +308 -54
  63. package/dist/core/analyzer/vector-index.js.map +1 -1
  64. package/dist/core/generator/schemas.d.ts +365 -0
  65. package/dist/core/generator/schemas.d.ts.map +1 -0
  66. package/dist/core/generator/schemas.js +190 -0
  67. package/dist/core/generator/schemas.js.map +1 -0
  68. package/dist/core/generator/spec-pipeline.d.ts +31 -11
  69. package/dist/core/generator/spec-pipeline.d.ts.map +1 -1
  70. package/dist/core/generator/spec-pipeline.js +172 -40
  71. package/dist/core/generator/spec-pipeline.js.map +1 -1
  72. package/dist/core/generator/stages/stage2-entities.d.ts.map +1 -1
  73. package/dist/core/generator/stages/stage2-entities.js +4 -2
  74. package/dist/core/generator/stages/stage2-entities.js.map +1 -1
  75. package/dist/core/generator/stages/stage3-services.d.ts.map +1 -1
  76. package/dist/core/generator/stages/stage3-services.js +4 -2
  77. package/dist/core/generator/stages/stage3-services.js.map +1 -1
  78. package/dist/core/generator/stages/stage4-api.d.ts.map +1 -1
  79. package/dist/core/generator/stages/stage4-api.js +4 -2
  80. package/dist/core/generator/stages/stage4-api.js.map +1 -1
  81. package/dist/core/generator/stages/stage5-architecture.d.ts +2 -1
  82. package/dist/core/generator/stages/stage5-architecture.d.ts.map +1 -1
  83. package/dist/core/generator/stages/stage5-architecture.js +15 -3
  84. package/dist/core/generator/stages/stage5-architecture.js.map +1 -1
  85. package/dist/core/generator/stages/stage6-adr.d.ts.map +1 -1
  86. package/dist/core/generator/stages/stage6-adr.js +2 -1
  87. package/dist/core/generator/stages/stage6-adr.js.map +1 -1
  88. package/dist/core/services/chat-agent.d.ts +5 -0
  89. package/dist/core/services/chat-agent.d.ts.map +1 -1
  90. package/dist/core/services/chat-agent.js +14 -0
  91. package/dist/core/services/chat-agent.js.map +1 -1
  92. package/dist/core/services/chat-tools.d.ts.map +1 -1
  93. package/dist/core/services/chat-tools.js +172 -50
  94. package/dist/core/services/chat-tools.js.map +1 -1
  95. package/dist/core/services/llm-service.d.ts +2 -0
  96. package/dist/core/services/llm-service.d.ts.map +1 -1
  97. package/dist/core/services/llm-service.js +47 -5
  98. package/dist/core/services/llm-service.js.map +1 -1
  99. package/dist/core/services/mcp-handlers/analysis.d.ts +12 -0
  100. package/dist/core/services/mcp-handlers/analysis.d.ts.map +1 -1
  101. package/dist/core/services/mcp-handlers/analysis.js +138 -2
  102. package/dist/core/services/mcp-handlers/analysis.js.map +1 -1
  103. package/dist/core/services/mcp-handlers/graph.d.ts +21 -1
  104. package/dist/core/services/mcp-handlers/graph.d.ts.map +1 -1
  105. package/dist/core/services/mcp-handlers/graph.js +142 -2
  106. package/dist/core/services/mcp-handlers/graph.js.map +1 -1
  107. package/dist/core/services/mcp-handlers/orient.d.ts +17 -0
  108. package/dist/core/services/mcp-handlers/orient.d.ts.map +1 -0
  109. package/dist/core/services/mcp-handlers/orient.js +200 -0
  110. package/dist/core/services/mcp-handlers/orient.js.map +1 -0
  111. package/dist/core/services/mcp-handlers/semantic.d.ts +18 -4
  112. package/dist/core/services/mcp-handlers/semantic.d.ts.map +1 -1
  113. package/dist/core/services/mcp-handlers/semantic.js +161 -17
  114. package/dist/core/services/mcp-handlers/semantic.js.map +1 -1
  115. package/dist/core/services/mcp-handlers/utils.d.ts +43 -0
  116. package/dist/core/services/mcp-handlers/utils.d.ts.map +1 -1
  117. package/dist/core/services/mcp-handlers/utils.js +66 -1
  118. package/dist/core/services/mcp-handlers/utils.js.map +1 -1
  119. package/dist/core/services/mcp-watcher.d.ts +41 -0
  120. package/dist/core/services/mcp-watcher.d.ts.map +1 -0
  121. package/dist/core/services/mcp-watcher.js +177 -0
  122. package/dist/core/services/mcp-watcher.js.map +1 -0
  123. package/dist/types/index.d.ts +1 -1
  124. package/dist/types/index.d.ts.map +1 -1
  125. package/dist/types/pipeline.d.ts +7 -0
  126. package/dist/types/pipeline.d.ts.map +1 -1
  127. package/package.json +3 -2
  128. package/src/viewer/InteractiveGraphViewer.jsx +33 -8
  129. package/src/viewer/components/ChatPanel.jsx +8 -5
  130. package/src/viewer/components/ClassGraph.jsx +699 -0
  131. package/src/viewer/utils/graph-helpers.js +1 -1
  132. 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: {
@@ -179,6 +206,40 @@ export const TOOL_DEFINITIONS = [
179
206
  required: ['directory', 'functionName'],
180
207
  },
181
208
  },
209
+ {
210
+ name: 'trace_execution_path',
211
+ description: 'USE THIS WHEN debugging: "how does request X reach function Y?", ' +
212
+ '"which call chain produced this error?", "is there a path from A to B?". ' +
213
+ 'Finds all execution paths between two functions in the call graph (BFS/DFS, ' +
214
+ 'shortest first). Complementary to get_subgraph — use get_subgraph for ' +
215
+ 'neighbourhood exploration, trace_execution_path for point-to-point tracing.',
216
+ inputSchema: {
217
+ type: 'object',
218
+ properties: {
219
+ directory: {
220
+ type: 'string',
221
+ description: 'Absolute path to the project directory',
222
+ },
223
+ entryFunction: {
224
+ type: 'string',
225
+ description: 'Starting function name (exact or partial match)',
226
+ },
227
+ targetFunction: {
228
+ type: 'string',
229
+ description: 'Target function name (exact or partial match)',
230
+ },
231
+ maxDepth: {
232
+ type: 'number',
233
+ description: 'Maximum path length in hops (default: 6)',
234
+ },
235
+ maxPaths: {
236
+ type: 'number',
237
+ description: 'Maximum number of paths to return (default: 10, max: 50)',
238
+ },
239
+ },
240
+ required: ['directory', 'entryFunction', 'targetFunction'],
241
+ },
242
+ },
182
243
  {
183
244
  name: 'get_mapping',
184
245
  description: 'Return the requirement → function mapping produced by spec-gen generate. ' +
@@ -206,11 +267,10 @@ export const TOOL_DEFINITIONS = [
206
267
  },
207
268
  {
208
269
  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).',
270
+ description: 'USE THIS WHEN: you\'ve modified code and want to know if the specs are still aligned, ' +
271
+ 'or when asked "is the code in sync with the spec?", "what changed since the last spec run?". ' +
272
+ 'Compares git-changed files against spec coverage impossible to replicate by reading files. ' +
273
+ 'Requires spec-gen generate to have been run at least once. No LLM required.',
214
274
  inputSchema: {
215
275
  type: 'object',
216
276
  properties: {
@@ -247,10 +307,10 @@ export const TOOL_DEFINITIONS = [
247
307
  },
248
308
  {
249
309
  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.',
310
+ description: 'USE THIS WHEN: you\'re about to modify a function and want to know the full consequences — ' +
311
+ '"what breaks if I change X?", "what\'s the blast radius of modifying Y?". ' +
312
+ 'Returns fan-in/out, full call chains, risk score (0–100), and refactoring strategy. ' +
313
+ 'Call this before touching any non-trivial function. Run analyze_codebase first.',
254
314
  inputSchema: {
255
315
  type: 'object',
256
316
  properties: {
@@ -399,12 +459,11 @@ export const TOOL_DEFINITIONS = [
399
459
  },
400
460
  {
401
461
  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".',
462
+ description: 'USE THIS WHEN: you need to find where to implement a new feature ' +
463
+ '"where should I add rate limiting?", "where\'s the best place to add email validation?". ' +
464
+ 'Combines semantic search + call graph to return ranked candidates with strategy. ' +
465
+ 'Call this before writing any code; then use get_subgraph on the top candidates. ' +
466
+ 'Requires "spec-gen analyze --embed".',
408
467
  inputSchema: {
409
468
  type: 'object',
410
469
  properties: {
@@ -431,12 +490,11 @@ export const TOOL_DEFINITIONS = [
431
490
  },
432
491
  {
433
492
  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.',
493
+ description: 'USE THIS WHEN: you don\'t know which file or function handles a concept ' +
494
+ '"where is rate limiting implemented?", "which function validates tokens?", ' +
495
+ '"what handles authentication?". Beats grep when the function name is unknown. ' +
496
+ 'Falls back to keyword search automatically if the embedding server is down. ' +
497
+ 'Requires "spec-gen analyze --embed" to have been run at least once.',
440
498
  inputSchema: {
441
499
  type: 'object',
442
500
  properties: {
@@ -478,13 +536,10 @@ export const TOOL_DEFINITIONS = [
478
536
  },
479
537
  {
480
538
  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.',
539
+ description: 'USE THIS WHEN: asked "which spec covers X?", "what does the spec say about Y?", ' +
540
+ '"which requirement describes Z?". Searches specs by meaning and returns linked source files. ' +
541
+ 'Use spec-first: check what the spec says before reading or writing code. ' +
542
+ 'Requires "spec-gen analyze --embed" or "spec-gen analyze --reindex-specs".',
488
543
  inputSchema: {
489
544
  type: 'object',
490
545
  properties: {
@@ -512,20 +567,120 @@ export const TOOL_DEFINITIONS = [
512
567
  required: ['directory', 'query'],
513
568
  },
514
569
  },
570
+ {
571
+ name: 'get_spec',
572
+ description: 'Return the full content of a spec domain\'s specification file (spec.md) and the ' +
573
+ 'functions that implement it. Use this to read requirements directly when you know the ' +
574
+ 'domain name. Complements search_specs (which searches by meaning) by giving exact ' +
575
+ 'read access to a known domain.',
576
+ inputSchema: {
577
+ type: 'object',
578
+ properties: {
579
+ directory: { type: 'string', description: 'Absolute path to the project directory' },
580
+ domain: {
581
+ type: 'string',
582
+ description: 'Domain name as returned by list_spec_domains (e.g. "auth", "analyzer")',
583
+ },
584
+ },
585
+ required: ['directory', 'domain'],
586
+ },
587
+ },
588
+ {
589
+ name: 'get_function_body',
590
+ description: 'Return the exact source code of a named function in a file. ' +
591
+ 'Use this after search_code or get_function_skeleton to read the full implementation. ' +
592
+ 'Requires a prior "spec-gen analyze" run for precise byte-range extraction; ' +
593
+ 'falls back to a brace-depth scan when the call graph is unavailable.',
594
+ inputSchema: {
595
+ type: 'object',
596
+ properties: {
597
+ directory: { type: 'string', description: 'Absolute path to the project directory' },
598
+ filePath: {
599
+ type: 'string',
600
+ description: 'File path relative to the project directory, e.g. "src/auth/jwt.ts"',
601
+ },
602
+ functionName: {
603
+ type: 'string',
604
+ description: 'Name of the function to extract, e.g. "verifyToken"',
605
+ },
606
+ },
607
+ required: ['directory', 'filePath', 'functionName'],
608
+ },
609
+ },
610
+ {
611
+ name: 'get_file_dependencies',
612
+ description: 'Return the file-level import dependencies for a given source file. ' +
613
+ 'Answers "what does this file import?" and "what files import this file?". ' +
614
+ 'Useful for planning refactors, understanding coupling, or scoping the blast radius ' +
615
+ 'of a change. Reads the dependency-graph.json produced by "spec-gen analyze".',
616
+ inputSchema: {
617
+ type: 'object',
618
+ properties: {
619
+ directory: { type: 'string', description: 'Absolute path to the project directory' },
620
+ filePath: {
621
+ type: 'string',
622
+ description: 'File path relative to the project root, e.g. "src/core/analyzer/vector-index.ts"',
623
+ },
624
+ direction: {
625
+ type: 'string',
626
+ enum: ['imports', 'importedBy', 'both'],
627
+ description: '"imports" = what this file depends on, "importedBy" = what depends on this file, "both" = both directions (default)',
628
+ },
629
+ },
630
+ required: ['directory', 'filePath'],
631
+ },
632
+ },
633
+ {
634
+ name: 'get_decisions',
635
+ description: 'List or search Architecture Decision Records (ADRs) stored in openspec/decisions/. ' +
636
+ 'Use this when you need to understand why an architectural decision was made, ' +
637
+ 'or to check whether a pattern is already documented. ' +
638
+ 'ADRs are generated by "spec-gen generate --adrs".',
639
+ inputSchema: {
640
+ type: 'object',
641
+ properties: {
642
+ directory: { type: 'string', description: 'Absolute path to the project directory' },
643
+ query: {
644
+ type: 'string',
645
+ description: 'Optional text filter — returns only ADRs whose title or content contains this string',
646
+ },
647
+ },
648
+ required: ['directory'],
649
+ },
650
+ },
515
651
  ];
516
- // ============================================================================
517
- // MCP SERVER
518
- // ============================================================================
519
- async function startMcpServer() {
652
+ async function startMcpServer(options = {}) {
520
653
  const server = new Server({ name: 'spec-gen', version: '1.0.0' }, { capabilities: { tools: {} } });
521
654
  server.setRequestHandler(ListToolsRequestSchema, async () => ({
522
655
  tools: TOOL_DEFINITIONS,
523
656
  }));
657
+ // --watch-auto: start the watcher on the first tool call that carries a directory
658
+ let autoWatcher;
524
659
  server.setRequestHandler(CallToolRequestSchema, async (request) => {
525
660
  const { name, arguments: args = {} } = request.params;
661
+ if (options.watchAuto && !autoWatcher) {
662
+ const dir = args.directory;
663
+ if (typeof dir === 'string') {
664
+ const { resolve } = await import('node:path');
665
+ const { McpWatcher } = await import('../../core/services/mcp-watcher.js');
666
+ const debounceMs = parseInt(options.watchDebounce ?? '400', 10);
667
+ autoWatcher = new McpWatcher({
668
+ rootPath: resolve(dir),
669
+ debounceMs: isNaN(debounceMs) ? 400 : debounceMs,
670
+ });
671
+ await autoWatcher.start();
672
+ const cleanup = () => autoWatcher.stop().then(() => process.exit(0));
673
+ process.on('SIGINT', cleanup);
674
+ process.on('SIGTERM', cleanup);
675
+ }
676
+ }
526
677
  try {
527
678
  let result;
528
- if (name === 'analyze_codebase') {
679
+ if (name === 'orient') {
680
+ const { directory, task, limit = 5 } = args;
681
+ result = await handleOrient(directory, task, limit);
682
+ }
683
+ else if (name === 'analyze_codebase') {
529
684
  const { directory, force = false } = args;
530
685
  result = await handleAnalyzeCodebase(directory, force);
531
686
  }
@@ -549,6 +704,10 @@ async function startMcpServer() {
549
704
  const { directory, functionName, direction = 'downstream', maxDepth = 3, format = 'json' } = args;
550
705
  result = await handleGetSubgraph(directory, functionName, direction, maxDepth, format);
551
706
  }
707
+ else if (name === 'trace_execution_path') {
708
+ const { directory, entryFunction, targetFunction, maxDepth = 6, maxPaths = 10 } = args;
709
+ result = await handleTraceExecutionPath(directory, entryFunction, targetFunction, maxDepth, maxPaths);
710
+ }
552
711
  else if (name === 'get_mapping') {
553
712
  const { directory, domain, orphansOnly } = args;
554
713
  result = await handleGetMapping(directory, domain, orphansOnly);
@@ -601,6 +760,22 @@ async function startMcpServer() {
601
760
  const { directory } = args;
602
761
  result = await handleListSpecDomains(directory);
603
762
  }
763
+ else if (name === 'get_spec') {
764
+ const { directory, domain } = args;
765
+ result = await handleGetSpec(directory, domain);
766
+ }
767
+ else if (name === 'get_function_body') {
768
+ const { directory, filePath, functionName } = args;
769
+ result = await handleGetFunctionBody(directory, filePath, functionName);
770
+ }
771
+ else if (name === 'get_file_dependencies') {
772
+ const { directory, filePath, direction = 'both' } = args;
773
+ result = await handleGetFileDependencies(directory, filePath, direction);
774
+ }
775
+ else if (name === 'get_decisions') {
776
+ const { directory, query } = args;
777
+ result = await handleGetDecisions(directory, query);
778
+ }
604
779
  else {
605
780
  return {
606
781
  content: [{ type: 'text', text: `Unknown tool: ${name}` }],
@@ -621,11 +796,27 @@ async function startMcpServer() {
621
796
  });
622
797
  const transport = new StdioServerTransport();
623
798
  await server.connect(transport);
799
+ if (options.watch) {
800
+ const { resolve } = await import('node:path');
801
+ const { McpWatcher } = await import('../../core/services/mcp-watcher.js');
802
+ const debounceMs = parseInt(options.watchDebounce ?? '400', 10);
803
+ const watcher = new McpWatcher({
804
+ rootPath: resolve(options.watch),
805
+ debounceMs: isNaN(debounceMs) ? 400 : debounceMs,
806
+ });
807
+ await watcher.start();
808
+ const cleanup = () => watcher.stop().then(() => process.exit(0));
809
+ process.on('SIGINT', cleanup);
810
+ process.on('SIGTERM', cleanup);
811
+ }
624
812
  }
625
813
  // ============================================================================
626
814
  // COMMAND EXPORT
627
815
  // ============================================================================
628
816
  export const mcpCommand = new Command('mcp')
629
817
  .description('Start spec-gen as an MCP server (stdio transport, for Cline/Claude Code)')
630
- .action(startMcpServer);
818
+ .option('--watch <directory>', 'Watch a project directory and incrementally re-index signatures on file changes')
819
+ .option('--watch-auto', 'Auto-detect the project directory from the first tool call and start watching (recommended for Cline/Claude Code)', false)
820
+ .option('--watch-debounce <ms>', 'Debounce delay in ms before re-indexing after a file change (default: 400)', '400')
821
+ .action((options) => startMcpServer(options));
631
822
  //# 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) {