spec-gen-cli 1.0.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 (303) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1078 -0
  3. package/dist/api/analyze.d.ts +17 -0
  4. package/dist/api/analyze.d.ts.map +1 -0
  5. package/dist/api/analyze.js +109 -0
  6. package/dist/api/analyze.js.map +1 -0
  7. package/dist/api/drift.d.ts +21 -0
  8. package/dist/api/drift.d.ts.map +1 -0
  9. package/dist/api/drift.js +145 -0
  10. package/dist/api/drift.js.map +1 -0
  11. package/dist/api/generate.d.ts +18 -0
  12. package/dist/api/generate.d.ts.map +1 -0
  13. package/dist/api/generate.js +251 -0
  14. package/dist/api/generate.js.map +1 -0
  15. package/dist/api/index.d.ts +39 -0
  16. package/dist/api/index.d.ts.map +1 -0
  17. package/dist/api/index.js +32 -0
  18. package/dist/api/index.js.map +1 -0
  19. package/dist/api/init.d.ts +18 -0
  20. package/dist/api/init.d.ts.map +1 -0
  21. package/dist/api/init.js +82 -0
  22. package/dist/api/init.js.map +1 -0
  23. package/dist/api/run.d.ts +19 -0
  24. package/dist/api/run.d.ts.map +1 -0
  25. package/dist/api/run.js +291 -0
  26. package/dist/api/run.js.map +1 -0
  27. package/dist/api/specs.d.ts +49 -0
  28. package/dist/api/specs.d.ts.map +1 -0
  29. package/dist/api/specs.js +136 -0
  30. package/dist/api/specs.js.map +1 -0
  31. package/dist/api/types.d.ts +176 -0
  32. package/dist/api/types.d.ts.map +1 -0
  33. package/dist/api/types.js +9 -0
  34. package/dist/api/types.js.map +1 -0
  35. package/dist/api/verify.d.ts +20 -0
  36. package/dist/api/verify.d.ts.map +1 -0
  37. package/dist/api/verify.js +117 -0
  38. package/dist/api/verify.js.map +1 -0
  39. package/dist/cli/commands/analyze.d.ts +27 -0
  40. package/dist/cli/commands/analyze.d.ts.map +1 -0
  41. package/dist/cli/commands/analyze.js +485 -0
  42. package/dist/cli/commands/analyze.js.map +1 -0
  43. package/dist/cli/commands/drift.d.ts +9 -0
  44. package/dist/cli/commands/drift.d.ts.map +1 -0
  45. package/dist/cli/commands/drift.js +540 -0
  46. package/dist/cli/commands/drift.js.map +1 -0
  47. package/dist/cli/commands/generate.d.ts +9 -0
  48. package/dist/cli/commands/generate.d.ts.map +1 -0
  49. package/dist/cli/commands/generate.js +633 -0
  50. package/dist/cli/commands/generate.js.map +1 -0
  51. package/dist/cli/commands/init.d.ts +9 -0
  52. package/dist/cli/commands/init.d.ts.map +1 -0
  53. package/dist/cli/commands/init.js +171 -0
  54. package/dist/cli/commands/init.js.map +1 -0
  55. package/dist/cli/commands/mcp.d.ts +638 -0
  56. package/dist/cli/commands/mcp.d.ts.map +1 -0
  57. package/dist/cli/commands/mcp.js +574 -0
  58. package/dist/cli/commands/mcp.js.map +1 -0
  59. package/dist/cli/commands/run.d.ts +24 -0
  60. package/dist/cli/commands/run.d.ts.map +1 -0
  61. package/dist/cli/commands/run.js +546 -0
  62. package/dist/cli/commands/run.js.map +1 -0
  63. package/dist/cli/commands/verify.d.ts +9 -0
  64. package/dist/cli/commands/verify.d.ts.map +1 -0
  65. package/dist/cli/commands/verify.js +417 -0
  66. package/dist/cli/commands/verify.js.map +1 -0
  67. package/dist/cli/commands/view.d.ts +9 -0
  68. package/dist/cli/commands/view.d.ts.map +1 -0
  69. package/dist/cli/commands/view.js +511 -0
  70. package/dist/cli/commands/view.js.map +1 -0
  71. package/dist/cli/index.d.ts +9 -0
  72. package/dist/cli/index.d.ts.map +1 -0
  73. package/dist/cli/index.js +83 -0
  74. package/dist/cli/index.js.map +1 -0
  75. package/dist/core/analyzer/architecture-writer.d.ts +67 -0
  76. package/dist/core/analyzer/architecture-writer.d.ts.map +1 -0
  77. package/dist/core/analyzer/architecture-writer.js +209 -0
  78. package/dist/core/analyzer/architecture-writer.js.map +1 -0
  79. package/dist/core/analyzer/artifact-generator.d.ts +222 -0
  80. package/dist/core/analyzer/artifact-generator.d.ts.map +1 -0
  81. package/dist/core/analyzer/artifact-generator.js +726 -0
  82. package/dist/core/analyzer/artifact-generator.js.map +1 -0
  83. package/dist/core/analyzer/call-graph.d.ts +83 -0
  84. package/dist/core/analyzer/call-graph.d.ts.map +1 -0
  85. package/dist/core/analyzer/call-graph.js +827 -0
  86. package/dist/core/analyzer/call-graph.js.map +1 -0
  87. package/dist/core/analyzer/code-shaper.d.ts +33 -0
  88. package/dist/core/analyzer/code-shaper.d.ts.map +1 -0
  89. package/dist/core/analyzer/code-shaper.js +149 -0
  90. package/dist/core/analyzer/code-shaper.js.map +1 -0
  91. package/dist/core/analyzer/dependency-graph.d.ts +179 -0
  92. package/dist/core/analyzer/dependency-graph.d.ts.map +1 -0
  93. package/dist/core/analyzer/dependency-graph.js +574 -0
  94. package/dist/core/analyzer/dependency-graph.js.map +1 -0
  95. package/dist/core/analyzer/duplicate-detector.d.ts +52 -0
  96. package/dist/core/analyzer/duplicate-detector.d.ts.map +1 -0
  97. package/dist/core/analyzer/duplicate-detector.js +279 -0
  98. package/dist/core/analyzer/duplicate-detector.js.map +1 -0
  99. package/dist/core/analyzer/embedding-service.d.ts +50 -0
  100. package/dist/core/analyzer/embedding-service.d.ts.map +1 -0
  101. package/dist/core/analyzer/embedding-service.js +104 -0
  102. package/dist/core/analyzer/embedding-service.js.map +1 -0
  103. package/dist/core/analyzer/file-walker.d.ts +78 -0
  104. package/dist/core/analyzer/file-walker.d.ts.map +1 -0
  105. package/dist/core/analyzer/file-walker.js +531 -0
  106. package/dist/core/analyzer/file-walker.js.map +1 -0
  107. package/dist/core/analyzer/import-parser.d.ts +91 -0
  108. package/dist/core/analyzer/import-parser.d.ts.map +1 -0
  109. package/dist/core/analyzer/import-parser.js +720 -0
  110. package/dist/core/analyzer/import-parser.js.map +1 -0
  111. package/dist/core/analyzer/index.d.ts +10 -0
  112. package/dist/core/analyzer/index.d.ts.map +1 -0
  113. package/dist/core/analyzer/index.js +10 -0
  114. package/dist/core/analyzer/index.js.map +1 -0
  115. package/dist/core/analyzer/refactor-analyzer.d.ts +80 -0
  116. package/dist/core/analyzer/refactor-analyzer.d.ts.map +1 -0
  117. package/dist/core/analyzer/refactor-analyzer.js +339 -0
  118. package/dist/core/analyzer/refactor-analyzer.js.map +1 -0
  119. package/dist/core/analyzer/repository-mapper.d.ts +150 -0
  120. package/dist/core/analyzer/repository-mapper.d.ts.map +1 -0
  121. package/dist/core/analyzer/repository-mapper.js +731 -0
  122. package/dist/core/analyzer/repository-mapper.js.map +1 -0
  123. package/dist/core/analyzer/signature-extractor.d.ts +31 -0
  124. package/dist/core/analyzer/signature-extractor.d.ts.map +1 -0
  125. package/dist/core/analyzer/signature-extractor.js +387 -0
  126. package/dist/core/analyzer/signature-extractor.js.map +1 -0
  127. package/dist/core/analyzer/significance-scorer.d.ts +79 -0
  128. package/dist/core/analyzer/significance-scorer.d.ts.map +1 -0
  129. package/dist/core/analyzer/significance-scorer.js +407 -0
  130. package/dist/core/analyzer/significance-scorer.js.map +1 -0
  131. package/dist/core/analyzer/subgraph-extractor.d.ts +43 -0
  132. package/dist/core/analyzer/subgraph-extractor.d.ts.map +1 -0
  133. package/dist/core/analyzer/subgraph-extractor.js +129 -0
  134. package/dist/core/analyzer/subgraph-extractor.js.map +1 -0
  135. package/dist/core/analyzer/vector-index.d.ts +63 -0
  136. package/dist/core/analyzer/vector-index.d.ts.map +1 -0
  137. package/dist/core/analyzer/vector-index.js +169 -0
  138. package/dist/core/analyzer/vector-index.js.map +1 -0
  139. package/dist/core/drift/drift-detector.d.ts +102 -0
  140. package/dist/core/drift/drift-detector.d.ts.map +1 -0
  141. package/dist/core/drift/drift-detector.js +597 -0
  142. package/dist/core/drift/drift-detector.js.map +1 -0
  143. package/dist/core/drift/git-diff.d.ts +55 -0
  144. package/dist/core/drift/git-diff.d.ts.map +1 -0
  145. package/dist/core/drift/git-diff.js +356 -0
  146. package/dist/core/drift/git-diff.js.map +1 -0
  147. package/dist/core/drift/index.d.ts +12 -0
  148. package/dist/core/drift/index.d.ts.map +1 -0
  149. package/dist/core/drift/index.js +9 -0
  150. package/dist/core/drift/index.js.map +1 -0
  151. package/dist/core/drift/spec-mapper.d.ts +73 -0
  152. package/dist/core/drift/spec-mapper.d.ts.map +1 -0
  153. package/dist/core/drift/spec-mapper.js +353 -0
  154. package/dist/core/drift/spec-mapper.js.map +1 -0
  155. package/dist/core/generator/adr-generator.d.ts +32 -0
  156. package/dist/core/generator/adr-generator.d.ts.map +1 -0
  157. package/dist/core/generator/adr-generator.js +192 -0
  158. package/dist/core/generator/adr-generator.js.map +1 -0
  159. package/dist/core/generator/index.d.ts +9 -0
  160. package/dist/core/generator/index.d.ts.map +1 -0
  161. package/dist/core/generator/index.js +12 -0
  162. package/dist/core/generator/index.js.map +1 -0
  163. package/dist/core/generator/mapping-generator.d.ts +54 -0
  164. package/dist/core/generator/mapping-generator.d.ts.map +1 -0
  165. package/dist/core/generator/mapping-generator.js +239 -0
  166. package/dist/core/generator/mapping-generator.js.map +1 -0
  167. package/dist/core/generator/openspec-compat.d.ts +160 -0
  168. package/dist/core/generator/openspec-compat.d.ts.map +1 -0
  169. package/dist/core/generator/openspec-compat.js +523 -0
  170. package/dist/core/generator/openspec-compat.js.map +1 -0
  171. package/dist/core/generator/openspec-format-generator.d.ts +111 -0
  172. package/dist/core/generator/openspec-format-generator.d.ts.map +1 -0
  173. package/dist/core/generator/openspec-format-generator.js +817 -0
  174. package/dist/core/generator/openspec-format-generator.js.map +1 -0
  175. package/dist/core/generator/openspec-writer.d.ts +131 -0
  176. package/dist/core/generator/openspec-writer.d.ts.map +1 -0
  177. package/dist/core/generator/openspec-writer.js +379 -0
  178. package/dist/core/generator/openspec-writer.js.map +1 -0
  179. package/dist/core/generator/prompts.d.ts +35 -0
  180. package/dist/core/generator/prompts.d.ts.map +1 -0
  181. package/dist/core/generator/prompts.js +212 -0
  182. package/dist/core/generator/prompts.js.map +1 -0
  183. package/dist/core/generator/spec-pipeline.d.ts +94 -0
  184. package/dist/core/generator/spec-pipeline.d.ts.map +1 -0
  185. package/dist/core/generator/spec-pipeline.js +474 -0
  186. package/dist/core/generator/spec-pipeline.js.map +1 -0
  187. package/dist/core/generator/stages/stage1-survey.d.ts +19 -0
  188. package/dist/core/generator/stages/stage1-survey.d.ts.map +1 -0
  189. package/dist/core/generator/stages/stage1-survey.js +105 -0
  190. package/dist/core/generator/stages/stage1-survey.js.map +1 -0
  191. package/dist/core/generator/stages/stage2-entities.d.ts +11 -0
  192. package/dist/core/generator/stages/stage2-entities.d.ts.map +1 -0
  193. package/dist/core/generator/stages/stage2-entities.js +67 -0
  194. package/dist/core/generator/stages/stage2-entities.js.map +1 -0
  195. package/dist/core/generator/stages/stage3-services.d.ts +11 -0
  196. package/dist/core/generator/stages/stage3-services.d.ts.map +1 -0
  197. package/dist/core/generator/stages/stage3-services.js +75 -0
  198. package/dist/core/generator/stages/stage3-services.js.map +1 -0
  199. package/dist/core/generator/stages/stage4-api.d.ts +11 -0
  200. package/dist/core/generator/stages/stage4-api.d.ts.map +1 -0
  201. package/dist/core/generator/stages/stage4-api.js +65 -0
  202. package/dist/core/generator/stages/stage4-api.js.map +1 -0
  203. package/dist/core/generator/stages/stage5-architecture.d.ts +10 -0
  204. package/dist/core/generator/stages/stage5-architecture.d.ts.map +1 -0
  205. package/dist/core/generator/stages/stage5-architecture.js +62 -0
  206. package/dist/core/generator/stages/stage5-architecture.js.map +1 -0
  207. package/dist/core/generator/stages/stage6-adr.d.ts +8 -0
  208. package/dist/core/generator/stages/stage6-adr.d.ts.map +1 -0
  209. package/dist/core/generator/stages/stage6-adr.js +41 -0
  210. package/dist/core/generator/stages/stage6-adr.js.map +1 -0
  211. package/dist/core/services/chat-agent.d.ts +45 -0
  212. package/dist/core/services/chat-agent.d.ts.map +1 -0
  213. package/dist/core/services/chat-agent.js +310 -0
  214. package/dist/core/services/chat-agent.js.map +1 -0
  215. package/dist/core/services/chat-tools.d.ts +32 -0
  216. package/dist/core/services/chat-tools.d.ts.map +1 -0
  217. package/dist/core/services/chat-tools.js +270 -0
  218. package/dist/core/services/chat-tools.js.map +1 -0
  219. package/dist/core/services/config-manager.d.ts +61 -0
  220. package/dist/core/services/config-manager.d.ts.map +1 -0
  221. package/dist/core/services/config-manager.js +143 -0
  222. package/dist/core/services/config-manager.js.map +1 -0
  223. package/dist/core/services/gitignore-manager.d.ts +29 -0
  224. package/dist/core/services/gitignore-manager.d.ts.map +1 -0
  225. package/dist/core/services/gitignore-manager.js +106 -0
  226. package/dist/core/services/gitignore-manager.js.map +1 -0
  227. package/dist/core/services/index.d.ts +8 -0
  228. package/dist/core/services/index.d.ts.map +1 -0
  229. package/dist/core/services/index.js +8 -0
  230. package/dist/core/services/index.js.map +1 -0
  231. package/dist/core/services/llm-service.d.ts +336 -0
  232. package/dist/core/services/llm-service.d.ts.map +1 -0
  233. package/dist/core/services/llm-service.js +1155 -0
  234. package/dist/core/services/llm-service.js.map +1 -0
  235. package/dist/core/services/mcp-handlers/analysis.d.ts +42 -0
  236. package/dist/core/services/mcp-handlers/analysis.d.ts.map +1 -0
  237. package/dist/core/services/mcp-handlers/analysis.js +300 -0
  238. package/dist/core/services/mcp-handlers/analysis.js.map +1 -0
  239. package/dist/core/services/mcp-handlers/graph.d.ts +65 -0
  240. package/dist/core/services/mcp-handlers/graph.d.ts.map +1 -0
  241. package/dist/core/services/mcp-handlers/graph.js +509 -0
  242. package/dist/core/services/mcp-handlers/graph.js.map +1 -0
  243. package/dist/core/services/mcp-handlers/semantic.d.ts +38 -0
  244. package/dist/core/services/mcp-handlers/semantic.d.ts.map +1 -0
  245. package/dist/core/services/mcp-handlers/semantic.js +172 -0
  246. package/dist/core/services/mcp-handlers/semantic.js.map +1 -0
  247. package/dist/core/services/mcp-handlers/utils.d.ts +21 -0
  248. package/dist/core/services/mcp-handlers/utils.d.ts.map +1 -0
  249. package/dist/core/services/mcp-handlers/utils.js +62 -0
  250. package/dist/core/services/mcp-handlers/utils.js.map +1 -0
  251. package/dist/core/services/project-detector.d.ts +32 -0
  252. package/dist/core/services/project-detector.d.ts.map +1 -0
  253. package/dist/core/services/project-detector.js +111 -0
  254. package/dist/core/services/project-detector.js.map +1 -0
  255. package/dist/core/verifier/index.d.ts +5 -0
  256. package/dist/core/verifier/index.d.ts.map +1 -0
  257. package/dist/core/verifier/index.js +5 -0
  258. package/dist/core/verifier/index.js.map +1 -0
  259. package/dist/core/verifier/verification-engine.d.ts +226 -0
  260. package/dist/core/verifier/verification-engine.d.ts.map +1 -0
  261. package/dist/core/verifier/verification-engine.js +681 -0
  262. package/dist/core/verifier/verification-engine.js.map +1 -0
  263. package/dist/types/index.d.ts +252 -0
  264. package/dist/types/index.d.ts.map +1 -0
  265. package/dist/types/index.js +5 -0
  266. package/dist/types/index.js.map +1 -0
  267. package/dist/types/pipeline.d.ts +148 -0
  268. package/dist/types/pipeline.d.ts.map +1 -0
  269. package/dist/types/pipeline.js +5 -0
  270. package/dist/types/pipeline.js.map +1 -0
  271. package/dist/utils/errors.d.ts +51 -0
  272. package/dist/utils/errors.d.ts.map +1 -0
  273. package/dist/utils/errors.js +128 -0
  274. package/dist/utils/errors.js.map +1 -0
  275. package/dist/utils/logger.d.ts +149 -0
  276. package/dist/utils/logger.d.ts.map +1 -0
  277. package/dist/utils/logger.js +331 -0
  278. package/dist/utils/logger.js.map +1 -0
  279. package/dist/utils/progress.d.ts +142 -0
  280. package/dist/utils/progress.d.ts.map +1 -0
  281. package/dist/utils/progress.js +280 -0
  282. package/dist/utils/progress.js.map +1 -0
  283. package/dist/utils/prompts.d.ts +53 -0
  284. package/dist/utils/prompts.d.ts.map +1 -0
  285. package/dist/utils/prompts.js +199 -0
  286. package/dist/utils/prompts.js.map +1 -0
  287. package/dist/utils/shutdown.d.ts +89 -0
  288. package/dist/utils/shutdown.d.ts.map +1 -0
  289. package/dist/utils/shutdown.js +237 -0
  290. package/dist/utils/shutdown.js.map +1 -0
  291. package/package.json +114 -0
  292. package/src/viewer/InteractiveGraphViewer.jsx +1486 -0
  293. package/src/viewer/app/index.html +17 -0
  294. package/src/viewer/app/main.jsx +13 -0
  295. package/src/viewer/components/ArchitectureView.jsx +177 -0
  296. package/src/viewer/components/ChatPanel.jsx +448 -0
  297. package/src/viewer/components/ClusterGraph.jsx +441 -0
  298. package/src/viewer/components/FilterBar.jsx +179 -0
  299. package/src/viewer/components/FlatGraph.jsx +275 -0
  300. package/src/viewer/components/MicroComponents.jsx +83 -0
  301. package/src/viewer/hooks/usePanZoom.js +79 -0
  302. package/src/viewer/utils/constants.js +47 -0
  303. package/src/viewer/utils/graph-helpers.js +291 -0
@@ -0,0 +1,574 @@
1
+ /**
2
+ * spec-gen MCP Server
3
+ *
4
+ * Exposes spec-gen's static analysis capabilities as Model Context Protocol
5
+ * tools, usable from Cline, Claude Code, or any MCP-compatible AI agent.
6
+ *
7
+ * Transport: stdio (standard for editor-embedded MCP servers)
8
+ *
9
+ * Configuration for Cline / Claude Code:
10
+ * {
11
+ * "mcpServers": {
12
+ * "spec-gen": {
13
+ * "command": "node",
14
+ * "args": ["/path/to/spec-gen/dist/cli/index.js", "mcp"]
15
+ * }
16
+ * }
17
+ * }
18
+ */
19
+ import { Command } from 'commander';
20
+ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
21
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
22
+ import { CallToolRequestSchema, ListToolsRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
23
+ import { sanitizeMcpError, validateDirectory } from '../../core/services/mcp-handlers/utils.js';
24
+ import { handleGetCallGraph, handleGetSubgraph, handleAnalyzeImpact, handleGetLowRiskRefactorCandidates, handleGetLeafFunctions, handleGetCriticalHubs, handleGetGodFunctions, } from '../../core/services/mcp-handlers/graph.js';
25
+ import { handleSearchCode, handleSuggestInsertionPoints, } from '../../core/services/mcp-handlers/semantic.js';
26
+ import { handleAnalyzeCodebase, handleGetArchitectureOverview, handleGetRefactorReport, handleGetDuplicateReport, handleGetSignatures, handleGetMapping, handleCheckSpecDrift, handleGetFunctionSkeleton, } from '../../core/services/mcp-handlers/analysis.js';
27
+ // Re-export utilities for tests
28
+ export { sanitizeMcpError, validateDirectory };
29
+ // Re-export handlers for use by chat-tools.ts and tests
30
+ export { handleGetCallGraph, handleGetSubgraph, handleAnalyzeImpact, handleGetLowRiskRefactorCandidates, handleGetLeafFunctions, handleGetCriticalHubs, handleGetGodFunctions, handleSearchCode, handleSuggestInsertionPoints, handleAnalyzeCodebase, handleGetArchitectureOverview, handleGetRefactorReport, handleGetDuplicateReport, handleGetSignatures, handleGetMapping, handleCheckSpecDrift, handleGetFunctionSkeleton, };
31
+ // ============================================================================
32
+ // TOOL DEFINITIONS
33
+ // ============================================================================
34
+ export const TOOL_DEFINITIONS = [
35
+ {
36
+ name: 'analyze_codebase',
37
+ description: 'Run static analysis on a project directory. Extracts repo structure, ' +
38
+ 'dependency graph, call graph (hub functions, entry points), and top ' +
39
+ 'refactoring priorities — all without an LLM. Results are cached for 1 hour.',
40
+ inputSchema: {
41
+ type: 'object',
42
+ properties: {
43
+ directory: {
44
+ type: 'string',
45
+ description: 'Absolute path to the project directory to analyze',
46
+ },
47
+ force: {
48
+ type: 'boolean',
49
+ description: 'Force re-analysis even if a recent cache exists (default: false)',
50
+ },
51
+ },
52
+ required: ['directory'],
53
+ },
54
+ },
55
+ {
56
+ name: 'get_architecture_overview',
57
+ description: 'Return a high-level architecture map of the project: domain clusters with their ' +
58
+ 'key files and roles, cross-cluster dependencies, global entry points, and critical hubs. ' +
59
+ 'Start here when onboarding to an unknown codebase or before planning a large feature. ' +
60
+ 'Run analyze_codebase first.',
61
+ inputSchema: {
62
+ type: 'object',
63
+ properties: {
64
+ directory: {
65
+ type: 'string',
66
+ description: 'Absolute path to the project directory (must have been analyzed first)',
67
+ },
68
+ },
69
+ required: ['directory'],
70
+ },
71
+ },
72
+ {
73
+ name: 'get_refactor_report',
74
+ description: 'Return a prioritized list of functions that need refactoring, based on ' +
75
+ 'the cached static analysis. Issues detected: unreachable code, high fan-in ' +
76
+ '(hub overload), high fan-out (god function), SRP violations (multi-requirement), ' +
77
+ 'and cyclic dependencies. Run analyze_codebase first.',
78
+ inputSchema: {
79
+ type: 'object',
80
+ properties: {
81
+ directory: {
82
+ type: 'string',
83
+ description: 'Absolute path to the project directory (must have been analyzed first)',
84
+ },
85
+ },
86
+ required: ['directory'],
87
+ },
88
+ },
89
+ {
90
+ name: 'get_call_graph',
91
+ description: 'Return the call graph for a project: hub functions (high fan-in), ' +
92
+ 'entry points (no internal callers), and architectural layer violations. ' +
93
+ 'Supports TypeScript, JavaScript, Python, Go, Rust, Ruby, Java. ' +
94
+ 'Run analyze_codebase first.',
95
+ inputSchema: {
96
+ type: 'object',
97
+ properties: {
98
+ directory: {
99
+ type: 'string',
100
+ description: 'Absolute path to the project directory',
101
+ },
102
+ },
103
+ required: ['directory'],
104
+ },
105
+ },
106
+ {
107
+ name: 'get_duplicate_report',
108
+ description: 'Detect duplicate code (clone groups) across the codebase using pure static analysis. ' +
109
+ 'Detects Type 1 (exact clones — identical after whitespace/comment normalization), ' +
110
+ 'Type 2 (structural clones — same structure with renamed variables), and ' +
111
+ 'Type 3 (near-clones with Jaccard similarity ≥ 0.7 on token n-grams). ' +
112
+ 'No LLM calls required. Run analyze_codebase first.',
113
+ inputSchema: {
114
+ type: 'object',
115
+ properties: {
116
+ directory: {
117
+ type: 'string',
118
+ description: 'Absolute path to the project directory (must have been analyzed first)',
119
+ },
120
+ },
121
+ required: ['directory'],
122
+ },
123
+ },
124
+ {
125
+ name: 'get_signatures',
126
+ description: 'Return compact function and class signatures for files in a project. ' +
127
+ 'Useful for understanding a codebase\'s public API without reading full source. ' +
128
+ 'Optionally filter by file path pattern. Run analyze_codebase first.',
129
+ inputSchema: {
130
+ type: 'object',
131
+ properties: {
132
+ directory: {
133
+ type: 'string',
134
+ description: 'Absolute path to the project directory',
135
+ },
136
+ filePattern: {
137
+ type: 'string',
138
+ description: 'Optional substring to filter file paths (e.g. "services", "api", ".py")',
139
+ },
140
+ },
141
+ required: ['directory'],
142
+ },
143
+ },
144
+ {
145
+ name: 'get_subgraph',
146
+ description: 'Extract a subgraph of the call graph centred on a specific function. ' +
147
+ 'Useful for impact analysis ("what does X call?"), dependency tracing ' +
148
+ '("who calls X?"), or understanding a change\'s blast radius. ' +
149
+ 'Run analyze_codebase first.',
150
+ inputSchema: {
151
+ type: 'object',
152
+ properties: {
153
+ directory: {
154
+ type: 'string',
155
+ description: 'Absolute path to the project directory',
156
+ },
157
+ functionName: {
158
+ type: 'string',
159
+ description: 'Name of the function to centre the subgraph on (exact or partial match)',
160
+ },
161
+ direction: {
162
+ type: 'string',
163
+ enum: ['downstream', 'upstream', 'both'],
164
+ description: 'downstream = what this function calls (default), ' +
165
+ 'upstream = who calls this function, ' +
166
+ 'both = full neighbourhood',
167
+ },
168
+ maxDepth: {
169
+ type: 'number',
170
+ description: 'Maximum traversal depth (default: 3)',
171
+ },
172
+ format: {
173
+ type: 'string',
174
+ enum: ['json', 'mermaid'],
175
+ description: 'Output format: "json" (default) or "mermaid" flowchart diagram',
176
+ },
177
+ },
178
+ required: ['directory', 'functionName'],
179
+ },
180
+ },
181
+ {
182
+ name: 'get_mapping',
183
+ description: 'Return the requirement → function mapping produced by spec-gen generate. ' +
184
+ 'Shows which functions implement which spec requirements, confidence level ' +
185
+ '(llm / heuristic), and orphan functions not covered by any requirement. ' +
186
+ 'Requires spec-gen generate to have been run at least once.',
187
+ inputSchema: {
188
+ type: 'object',
189
+ properties: {
190
+ directory: {
191
+ type: 'string',
192
+ description: 'Absolute path to the project directory',
193
+ },
194
+ domain: {
195
+ type: 'string',
196
+ description: 'Filter by domain name (e.g. "auth", "crawler")',
197
+ },
198
+ orphansOnly: {
199
+ type: 'boolean',
200
+ description: 'Return only orphan functions (not covered by any requirement)',
201
+ },
202
+ },
203
+ required: ['directory'],
204
+ },
205
+ },
206
+ {
207
+ name: 'check_spec_drift',
208
+ description: 'Detect spec drift: identify code changes that are not reflected in the ' +
209
+ 'project\'s OpenSpec specifications. Compares git-changed files against ' +
210
+ 'spec coverage maps. Returns issues categorised as gap, stale, uncovered, ' +
211
+ 'or orphaned-spec. Requires spec-gen generate to have been run at least once. ' +
212
+ 'Runs in static mode (no LLM required).',
213
+ inputSchema: {
214
+ type: 'object',
215
+ properties: {
216
+ directory: {
217
+ type: 'string',
218
+ description: 'Absolute path to the project directory (must be a git repository)',
219
+ },
220
+ base: {
221
+ type: 'string',
222
+ description: 'Git ref to compare against (default: auto-detect main/master)',
223
+ },
224
+ files: {
225
+ type: 'array',
226
+ items: { type: 'string' },
227
+ description: 'Specific files to check (default: all changed files)',
228
+ },
229
+ domains: {
230
+ type: 'array',
231
+ items: { type: 'string' },
232
+ description: 'Only check these spec domains (default: all domains)',
233
+ },
234
+ failOn: {
235
+ type: 'string',
236
+ enum: ['error', 'warning', 'info'],
237
+ description: 'Minimum severity to report (default: "warning")',
238
+ },
239
+ maxFiles: {
240
+ type: 'number',
241
+ description: 'Maximum number of changed files to analyze (default: 100)',
242
+ },
243
+ },
244
+ required: ['directory'],
245
+ },
246
+ },
247
+ {
248
+ name: 'analyze_impact',
249
+ description: 'Deep impact analysis for a specific function or symbol. Returns fan-in, fan-out, ' +
250
+ 'upstream call chain, downstream critical path, a risk score (0–100), blast radius ' +
251
+ 'estimation, and a recommended refactoring strategy. Use this before touching any ' +
252
+ 'function to understand the full consequences. Run analyze_codebase first.',
253
+ inputSchema: {
254
+ type: 'object',
255
+ properties: {
256
+ directory: {
257
+ type: 'string',
258
+ description: 'Absolute path to the project directory',
259
+ },
260
+ symbol: {
261
+ type: 'string',
262
+ description: 'Function or method name to analyse (exact or partial match)',
263
+ },
264
+ depth: {
265
+ type: 'number',
266
+ description: 'Traversal depth for upstream/downstream chains (default: 2)',
267
+ },
268
+ },
269
+ required: ['directory', 'symbol'],
270
+ },
271
+ },
272
+ {
273
+ name: 'get_low_risk_refactor_candidates',
274
+ description: 'Return the safest functions to refactor first: low fan-in (few callers), ' +
275
+ 'low fan-out (few dependencies), no cyclic involvement, not a hub. ' +
276
+ 'Ideal starting point for incremental, low-risk refactoring sessions. ' +
277
+ 'Run analyze_codebase first.',
278
+ inputSchema: {
279
+ type: 'object',
280
+ properties: {
281
+ directory: {
282
+ type: 'string',
283
+ description: 'Absolute path to the project directory',
284
+ },
285
+ limit: {
286
+ type: 'number',
287
+ description: 'Maximum number of candidates to return (default: 5)',
288
+ },
289
+ filePattern: {
290
+ type: 'string',
291
+ description: 'Optional substring to restrict candidates to matching file paths',
292
+ },
293
+ },
294
+ required: ['directory'],
295
+ },
296
+ },
297
+ {
298
+ name: 'get_leaf_functions',
299
+ description: 'Return functions that make no internal calls (leaves of the call graph). ' +
300
+ 'These are the safest refactoring targets: self-contained, easy to unit-test, ' +
301
+ 'zero downstream blast radius. Best entry point for bottom-up refactoring. ' +
302
+ 'Run analyze_codebase first.',
303
+ inputSchema: {
304
+ type: 'object',
305
+ properties: {
306
+ directory: {
307
+ type: 'string',
308
+ description: 'Absolute path to the project directory',
309
+ },
310
+ limit: {
311
+ type: 'number',
312
+ description: 'Maximum number of results to return (default: 20)',
313
+ },
314
+ filePattern: {
315
+ type: 'string',
316
+ description: 'Optional substring to restrict results to matching file paths',
317
+ },
318
+ sortBy: {
319
+ type: 'string',
320
+ enum: ['fanIn', 'name', 'file'],
321
+ description: 'Sort order: "fanIn" (most-called leaves first, default), "name", or "file"',
322
+ },
323
+ },
324
+ required: ['directory'],
325
+ },
326
+ },
327
+ {
328
+ name: 'get_critical_hubs',
329
+ description: 'Return the highest-impact hub functions: high fan-in (many callers depend on them), ' +
330
+ 'possibly high fan-out (god functions). These require the most careful, incremental ' +
331
+ 'refactoring with broad test coverage. Includes a stability score and recommended ' +
332
+ 'approach (extract, split, facade, delegate). Run analyze_codebase first.',
333
+ inputSchema: {
334
+ type: 'object',
335
+ properties: {
336
+ directory: {
337
+ type: 'string',
338
+ description: 'Absolute path to the project directory',
339
+ },
340
+ limit: {
341
+ type: 'number',
342
+ description: 'Maximum number of hubs to return (default: 10)',
343
+ },
344
+ minFanIn: {
345
+ type: 'number',
346
+ description: 'Minimum fan-in threshold to be considered a hub (default: 3)',
347
+ },
348
+ },
349
+ required: ['directory'],
350
+ },
351
+ },
352
+ {
353
+ name: 'get_function_skeleton',
354
+ description: 'Return a noise-stripped skeleton of a source file: logs, inline comments, and ' +
355
+ 'non-JSDoc block comments are removed while signatures, control flow (if/for/try), ' +
356
+ 'return/throw statements, and call expressions are preserved. ' +
357
+ 'Use this before refactoring a god function to get a compact structural view ' +
358
+ 'without reading thousands of lines of raw source.',
359
+ inputSchema: {
360
+ type: 'object',
361
+ properties: {
362
+ directory: {
363
+ type: 'string',
364
+ description: 'Absolute path to the project directory',
365
+ },
366
+ filePath: {
367
+ type: 'string',
368
+ description: 'Path to the file, relative to the project directory',
369
+ },
370
+ },
371
+ required: ['directory', 'filePath'],
372
+ },
373
+ },
374
+ {
375
+ name: 'get_god_functions',
376
+ description: 'Detect god functions (high fan-out, likely orchestrators) in the project or in a ' +
377
+ 'specific file, and return their call-graph neighborhood. ' +
378
+ 'Use this to identify which functions need to be refactored and understand what ' +
379
+ 'logical blocks to extract. Run analyze_codebase first.',
380
+ inputSchema: {
381
+ type: 'object',
382
+ properties: {
383
+ directory: {
384
+ type: 'string',
385
+ description: 'Absolute path to the project directory',
386
+ },
387
+ filePath: {
388
+ type: 'string',
389
+ description: 'Optional: restrict search to this file (relative path)',
390
+ },
391
+ fanOutThreshold: {
392
+ type: 'number',
393
+ description: 'Minimum fan-out to be considered a god function (default: 8)',
394
+ },
395
+ },
396
+ required: ['directory'],
397
+ },
398
+ },
399
+ {
400
+ name: 'suggest_insertion_points',
401
+ description: 'Find the best places in the codebase to implement a new feature described in natural language. ' +
402
+ 'Combines semantic similarity with structural analysis (entry points, orchestrators, hubs) ' +
403
+ 'to return ranked insertion candidates with an actionable strategy for each. ' +
404
+ 'Ideal before implementing a feature: run this first, then use get_subgraph or ' +
405
+ 'get_function_skeleton on the top candidates to understand the local context. ' +
406
+ 'Requires a vector index built with "spec-gen analyze --embed".',
407
+ inputSchema: {
408
+ type: 'object',
409
+ properties: {
410
+ directory: {
411
+ type: 'string',
412
+ description: 'Absolute path to the project directory',
413
+ },
414
+ description: {
415
+ type: 'string',
416
+ description: 'Natural language description of the feature to implement, ' +
417
+ 'e.g. "add retry mechanism for HTTP requests" or "validate user email on registration"',
418
+ },
419
+ limit: {
420
+ type: 'number',
421
+ description: 'Maximum number of candidates to return (default: 5)',
422
+ },
423
+ language: {
424
+ type: 'string',
425
+ description: 'Filter by language: "TypeScript", "Python", "Go", "Rust", "Ruby", "Java"',
426
+ },
427
+ },
428
+ required: ['directory', 'description'],
429
+ },
430
+ },
431
+ {
432
+ name: 'search_code',
433
+ description: 'Semantic search over indexed functions using a natural language query. ' +
434
+ 'Returns the closest functions by meaning — useful for finding implementations, ' +
435
+ 'understanding how a concept is handled, or navigating unfamiliar codebases. ' +
436
+ 'Requires a vector index built with "spec-gen analyze --embed". ' +
437
+ 'Configure the embedding endpoint via EMBED_BASE_URL + EMBED_MODEL env vars ' +
438
+ 'or the "embedding" section in .spec-gen/config.json.',
439
+ inputSchema: {
440
+ type: 'object',
441
+ properties: {
442
+ directory: {
443
+ type: 'string',
444
+ description: 'Absolute path to the project directory',
445
+ },
446
+ query: {
447
+ type: 'string',
448
+ description: 'Natural language query, e.g. "authenticate user with JWT"',
449
+ },
450
+ limit: {
451
+ type: 'number',
452
+ description: 'Maximum number of results to return (default: 10)',
453
+ },
454
+ language: {
455
+ type: 'string',
456
+ description: 'Filter by language: "TypeScript", "Python", "Go", "Rust", "Ruby", "Java"',
457
+ },
458
+ minFanIn: {
459
+ type: 'number',
460
+ description: 'Only return functions with at least this many callers (hub filter)',
461
+ },
462
+ },
463
+ required: ['directory', 'query'],
464
+ },
465
+ },
466
+ ];
467
+ // ============================================================================
468
+ // MCP SERVER
469
+ // ============================================================================
470
+ async function startMcpServer() {
471
+ const server = new Server({ name: 'spec-gen', version: '1.0.0' }, { capabilities: { tools: {} } });
472
+ server.setRequestHandler(ListToolsRequestSchema, async () => ({
473
+ tools: TOOL_DEFINITIONS,
474
+ }));
475
+ server.setRequestHandler(CallToolRequestSchema, async (request) => {
476
+ const { name, arguments: args = {} } = request.params;
477
+ try {
478
+ let result;
479
+ if (name === 'analyze_codebase') {
480
+ const { directory, force = false } = args;
481
+ result = await handleAnalyzeCodebase(directory, force);
482
+ }
483
+ else if (name === 'get_architecture_overview') {
484
+ const { directory } = args;
485
+ result = await handleGetArchitectureOverview(directory);
486
+ }
487
+ else if (name === 'get_refactor_report') {
488
+ const { directory } = args;
489
+ result = await handleGetRefactorReport(directory);
490
+ }
491
+ else if (name === 'get_call_graph') {
492
+ const { directory } = args;
493
+ result = await handleGetCallGraph(directory);
494
+ }
495
+ else if (name === 'get_signatures') {
496
+ const { directory, filePattern } = args;
497
+ result = await handleGetSignatures(directory, filePattern);
498
+ }
499
+ else if (name === 'get_subgraph') {
500
+ const { directory, functionName, direction = 'downstream', maxDepth = 3, format = 'json' } = args;
501
+ result = await handleGetSubgraph(directory, functionName, direction, maxDepth, format);
502
+ }
503
+ else if (name === 'get_mapping') {
504
+ const { directory, domain, orphansOnly } = args;
505
+ result = await handleGetMapping(directory, domain, orphansOnly);
506
+ }
507
+ else if (name === 'analyze_impact') {
508
+ const { directory, symbol, depth = 2 } = args;
509
+ result = await handleAnalyzeImpact(directory, symbol, depth);
510
+ }
511
+ else if (name === 'get_low_risk_refactor_candidates') {
512
+ const { directory, limit = 5, filePattern } = args;
513
+ result = await handleGetLowRiskRefactorCandidates(directory, limit, filePattern);
514
+ }
515
+ else if (name === 'get_leaf_functions') {
516
+ const { directory, limit = 20, filePattern, sortBy = 'fanIn' } = args;
517
+ result = await handleGetLeafFunctions(directory, limit, filePattern, sortBy);
518
+ }
519
+ else if (name === 'get_critical_hubs') {
520
+ const { directory, limit = 10, minFanIn = 3 } = args;
521
+ result = await handleGetCriticalHubs(directory, limit, minFanIn);
522
+ }
523
+ else if (name === 'get_duplicate_report') {
524
+ const { directory } = args;
525
+ result = await handleGetDuplicateReport(directory);
526
+ }
527
+ else if (name === 'get_function_skeleton') {
528
+ const { directory, filePath } = args;
529
+ result = await handleGetFunctionSkeleton(directory, filePath);
530
+ }
531
+ else if (name === 'get_god_functions') {
532
+ const { directory, filePath, fanOutThreshold = 8 } = args;
533
+ result = await handleGetGodFunctions(directory, filePath, fanOutThreshold);
534
+ }
535
+ else if (name === 'check_spec_drift') {
536
+ const { directory, base = 'auto', files = [], domains = [], failOn = 'warning', maxFiles = 100 } = args;
537
+ result = await handleCheckSpecDrift(directory, base, files, domains, failOn, maxFiles);
538
+ }
539
+ else if (name === 'search_code') {
540
+ const { directory, query, limit = 10, language, minFanIn } = args;
541
+ result = await handleSearchCode(directory, query, limit, language, minFanIn);
542
+ }
543
+ else if (name === 'suggest_insertion_points') {
544
+ const { directory, description, limit = 5, language } = args;
545
+ result = await handleSuggestInsertionPoints(directory, description, limit, language);
546
+ }
547
+ else {
548
+ return {
549
+ content: [{ type: 'text', text: `Unknown tool: ${name}` }],
550
+ isError: true,
551
+ };
552
+ }
553
+ const text = typeof result === 'string' ? result : JSON.stringify(result, null, 2);
554
+ return {
555
+ content: [{ type: 'text', text }],
556
+ };
557
+ }
558
+ catch (err) {
559
+ return {
560
+ content: [{ type: 'text', text: `Tool error: ${sanitizeMcpError(err)}` }],
561
+ isError: true,
562
+ };
563
+ }
564
+ });
565
+ const transport = new StdioServerTransport();
566
+ await server.connect(transport);
567
+ }
568
+ // ============================================================================
569
+ // COMMAND EXPORT
570
+ // ============================================================================
571
+ export const mcpCommand = new Command('mcp')
572
+ .description('Start spec-gen as an MCP server (stdio transport, for Cline/Claude Code)')
573
+ .action(startMcpServer);
574
+ //# sourceMappingURL=mcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../../src/cli/commands/mcp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * spec-gen run command (default pipeline)
3
+ *
4
+ * Runs the full pipeline: init → analyze → generate in sequence.
5
+ * Smart defaults skip unnecessary steps and detect existing setups.
6
+ */
7
+ import { Command } from 'commander';
8
+ interface RunOptions {
9
+ force: boolean;
10
+ reanalyze: boolean;
11
+ model: string;
12
+ dryRun: boolean;
13
+ yes: boolean;
14
+ maxFiles: number;
15
+ adr: boolean;
16
+ }
17
+ export declare const runCommand: Command;
18
+ /**
19
+ * Create the default action for spec-gen (no subcommand)
20
+ * This wraps runCommand to be used as the default action
21
+ */
22
+ export declare function runDefaultPipeline(path: string, options: Partial<RunOptions>): Promise<void>;
23
+ export {};
24
+ //# sourceMappingURL=run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/run.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA8CpC,UAAU,UAAU;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,GAAG,EAAE,OAAO,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,OAAO,CAAC;CACd;AAoMD,eAAO,MAAM,UAAU,SAubnB,CAAC;AAEL;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAQlG"}